Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jnejunior

de MySQL para PDO

Recommended Posts

ae galera, olha eu aki de novo...

 

preciso de ajuda para adaptar meu sistema de login de MySQL para PDO, como eu não manjo muito de PDO espero que me ajudem, como verificar se o usuário existe, mostrar dados da tabela, etc...

 

espero poder contar com você, não quero mastigado, só quero ajuda de como começar, até tutoriais você podem me indicar...

 

 

valeu...

 

a principio preciso verificar se o usuário e senha digitado no form bate com o cadastrado na tabela do banco...

 

meu script de login...

<?php
       if (isset($_POST['login'])) {
         $usuario = antiInjection($_POST['usuario']);
         $senha = antiInjection($_POST['senha']);
         $novaSenha = antiInjection(md5($senha));

         if (empty($usuario)) {
           echo '<span class="erro">Digite seu usuário!</span>';
         } elseif (empty($senha)) {
           echo '<span class="erro">Digite a senha!</span>';
         } else {

           $sqlAcesso = mysql_query("SELECT * FROM cadastrousuarios WHERE usuUsu = '$usuario' AND senhaUsu = '$novaSenha'");
           $contaUsu = mysql_num_rows($sqlAcesso);

           if ($contaUsu == 0) {
             unset($_SESSION['loginAcesso']);
             unset($_SESSION['senhaAcesso']);
             header("Location: login.php");
           } else {
             $_SESSION['loginAcesso'] = $usuario;
             $_SESSION['senhaAcesso'] = $novaSenha;
             header("Location: pagRestrita.php");
           }
         }
       }
       ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom não lembro a maioria dos comandos de cabeça, mas é algo parecido com isso abaixo.

 

você não vai alterar todo seu sistema, apenas a forma como você trata os dados.

mysql_fetch_array($query); p/ $pdo->fetchAll($query);
mysql_num_rows($query); p/ $pdo->result($query);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom não lembro a maioria dos comandos de cabeça, mas é algo parecido com isso abaixo.

 

você não vai alterar todo seu sistema, apenas a forma como você trata os dados.

mysql_fetch_array($query); p/ $pdo->fetchAll($query);
mysql_num_rows($query); p/ $pdo->result($query);

Correção.

 

O substituto para mysql_num_rows() é PDOStatement::rowCount().

 

Porém há uma observação importante a se fazer quando esse método é usado sobre um comando SELECT.

 

Alguns drivers suportados pela PDO podem não retornam aquilo que se espera desse método, no caso, o número de registros.

 

Como não sei ao certo sobre quais drivers essa observação se refere, por segurança, o melhor seria você contar os registros de PDOStatement::fetchAll(), condicionando antes de executar alguma rotina.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas, você mesmo disse que não usa. Só complementei pra não ficar com explicação cortada, o que geraria mais posts no tópico, mais teclas a serem pressionadas e menos horas de sono durmidas, já que eu ponho a cabeça no travesseiro fazendo um retropectiva do meu dia. :lol: :huh: <_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas, você mesmo disse que não usa. Só complementei pra não ficar com explicação cortada, o que geraria mais posts no tópico, mais teclas a serem pressionadas e menos horas de sono durmidas, já que eu ponho a cabeça no travesseiro fazendo um retropectiva do meu dia. :lol: :huh: <_<

Tambem Acho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui tem alguns exemplos de como utilizar PDO básico..

e logo no final tem um link para um artigo com algumas práticas (select, update e etc)

 

artigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

MySQLi é melhor .. :lol:

 

 

porque?

 

Porque e mais simples rsrs , e orientado a objetos tambem ... porem o PDO e do PHP .. na maioria de servidores ja tem o PDO

ja o MySQLi eu não afirmo todos :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque e mais simples rsrs , e orientado a objetos tambem ... porem o PDO e do PHP .. na maioria de servidores ja tem o PDO

ja o MySQLi eu não afirmo todos :lol:

 

o mysqli também é tão quão seguro o PDO?

e precisa de script anti injection?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, não sei te dizer de MySQLi é melhor ou pior que a PDO.

 

Porém, a PDO tem como principal ponto forte a abstração dos dados.

 

Um código escrito com mysql/mysqli só vai funcionar com bancos MySQL.

 

Agora pensa comigo, e se de repente a Oracle (que comprou a Sun que era dona do MySQL) resolver torná-lo pago?

 

Das duas uma: Ou você perde seu sistema, ou perde vários horas alterando cada entrada de mysqli_ para, por exemplo, pg_ (PostgreeSQL).

 

Pior, ainda terá de testar cada operação, para ver se o resultado é o mesmo que antes.

 

Claro que sempre haverá quem prefira fazer essa abstração na mão, alterando o adapter usado apenas por trocar um parâmetro da Factory. Mas se a PDO já tem isso, pra que reiventar a roda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então sugerindo que sua afirmação torne-se realidade PDO seria melhor, mas se formos otimistas podemos manter nossos ideais e também trabalhar com MySQL(i)? é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade ele só deu um exemplo... PDO funciona com mais de 10 BD, se um dia você precisar mecher com o SQlite, Postgre, Firebird, MS SQL e etc... o PDO suporta, mas o mysqli não

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto o que ele quiz diser foi mais ou menos isso.

 

Imagina que você tenha 10 páginas com o seguinte código tradicional por exemplo o MySQL.

mysql_query("SELECT * FROM cadastro");

 

Agora imagine essas 10 páginas rodando o PDO junto com o MySQL

$pdo->query("SELECT * FROM cadastro");

 

Se amanhã você precisa alterar seu banco de dados do MySQL para o PostgreeSQL, do modo convecional você teria que alterar em todas as 10 páginas de mysql_query p/ pg_query(exemplo).

 

Agora se você estivesse rodando o PDO, a unica coisa que você iria mudar era o arquivo de conexão do PDO.

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde!!!!

 

Bem sou iniciante em PHP e tinha algumas coisas feita por mim

em php e mysql, mas agora estou tendo problemas com o pdo

vou mandar meu script para que se alguem possa me ajudar por favor ficarei muito grato

 

<?php
try{ //tipo conexào local nome banco de dados usuario senha
$pdo=new PDO("mysql:host=localhost; dbname=teste", "root", "");
}catch(PDOException $e){
echo $e->getMessage();
}
//pegando dados atraves do post
$nome=$_POST['nome'];
$cel=$_POST['cel'];
$email=$_POST['email'];
$senha=$_POST['senha'];

$validaremail=$pdo->query("SELECT * FROM usuarios WHERE :email='$email'");
$contar=PDOStatement::rowCount($validaremail);
if($contar ==0){
//cadastro no banco
$pdo=$pdo->prepare("INSERT INTO usuarios(nome,cel,email,senha,nivel,status)VALUES(:nome,:cel,:email,:senha,1,0)");
$pdo->bindValue(":nome",$nome);
$pdo->bindValue(":cel",$cel);
$pdo->bindValue(":email",$email);
$pdo->bindValue(":senha",$senha);
$pdo->execute();
}else{
$flash="Desculpe mas já existe um usuário cadastrado com este e-mail em nosso sistema";
}
if(isset($pdo)){
$flash="Cadastro efetuado com sucesso, aguarde nossa aprovação!";
}else{
if(empty($flash)){
$flash="Ops! Houve um erro em nosso sistema, contate o administrador!";
}
echo$flash;
}


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.