Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, estou aprendendo PDO e gostaria de saber algumas informações sobre ele:
-
Quando eu estou usando para fazer uma consulta eu devo usar sempre o try e catch, por exemplo em todas páginas com consultas SQL?
-
No código abaixo:
$searchSQL = $pdo->prepare('SELECT email,senha FROM tbl_usuario WHERE email = ?');
$searchSQL->execute(array($email));
$linha = $searchSQL->fetch(PDO::FETCH_ASSOC);
Eu devo inserir a seguinte linha, ou não tem nada a ver com esse tipo de programação:
$buscaSQL->bindValue(1, $email, PDO::PARAM_STR); // Seria algo assim?
Ou eu somente insiro a linha acima se for assim:
$buscaSQL = $pdo->prepare('SELECT email FROM tbl_usuario WHERE email = :email');
$buscaSQL->bindValue(:email, $email, PDO::PARAM_STR);
$buscaSQL->execute(array($email));
3. Qual dos dois tipos é mais profissional, o com ?,? ou :campo,:id
4. No segundo tópico, quando eu for fazer o execute eu sempre preciso passar as variáveis ou posso só colocar $SQL->execute()
5. Alguém me explica de um jeito bem fácil a diferença entre BindValue e BindParam(eu li que se difere somente que o Value, seria como se passasse a variável direto no banco, no caso na hora do execute, então eu posso digitar 100 vezes outro valor e o valor vai ser sempre o 1° e Param não, ele muda se você atribuir outro valor, talvez por isso que seja Value(duh)).
Agradeço a todos que ajudarem
Bom dia,
O PDO Statement, serve justamente para auxiliar na prevenção contra SQL INJECTION.
Desde que você não execute-o dessa forma:
$searchSQL = $pdo->prepare('
SELECT email, senha
FROM tbl_usuario
$searchSQL = $pdo->prepare('
SELECT email, senha
FROM tbl_usuario
>
Citar
-
Quando eu estou usando para fazer uma consulta eu devo usar sempre o try e catch, por exemplo em todas páginas com consultas SQL?
Sim. Você manda primeiro ele tentar fazer a ação ao banco de dados, caso o mesmo não consiga ele dispara uma exceção para indicar a falha.
>
Em 07/03/2017 at 11:19, Saul da Silva Rolim disse:
4. No segundo tópico, quando eu for fazer o execute eu sempre preciso passar as variáveis ou posso só colocar $SQL->execute()
Como eu disse, acima... Você precisa fazer o tratamento dos valores, antes de mandar executar.
>
Em 07/03/2017 at 11:19, Saul da Silva Rolim disse:
5. Alguém me explica de um jeito bem fácil a diferença entre BindValue e BindParam(eu li que se difere somente que o Value, seria como se passasse a variável direto no banco, no caso na hora do execute, então eu posso digitar 100 vezes outro valor e o valor vai ser sempre o 1° e Param não, ele muda se você atribuir outro valor, talvez por isso que seja Value(duh)).
O bindParam executa por referencia e já o bindValue por valor direto, por exemplo:
$cargo = "Admin";
$pdo->prepare("
INSERT INTO
ranking (cargo)
values (:cargo)
$pdo->execute() // O cargo inserido vai ser Membro.
.........
........
........
.........
$cargo = "Admin";
$pdo->prepare("
INSERT INTO
ranking (cargo)
values (:cargo)
$pdo->execute() // O cargo inserido vai ser Admin.