update - sistema de cadastro de clientes em php completo



Como construir uma consulta SQL corretamente em um script PHP? (1)

A maneira mais segura de adicionar uma variável a uma consulta SQL é adicioná-la através de uma instrução preparada .

É muito importante entender que simplesmente adicionar aspas em torno de uma variável não é suficiente e acabará por levar a inúmeros problemas, desde erros de sintaxe até injeções de SQL. Por outro lado, devido à própria natureza das declarações preparadas, é uma solução à prova de balas que torna impossível a introdução de qualquer problema por meio de uma variável de dados.

Portanto, para cada consulta executada, se pelo menos uma variável for usada, você deve substituí-la por um espaço reservado, preparar sua consulta e executá-la, passando variáveis ​​separadamente.

Primeiro de tudo, você deve alterar sua consulta, adicionando espaços reservados no lugar de variáveis. Sua consulta se tornará:

$sql = "INSERT INTO users (fname, lname) VALUES (?, ?)";

Então, você terá que prepará-lo, vincular variáveis ​​e executar:

$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "ss", $fname, $lname);
mysqli_stmt_execute($stmt);

Como você pode ver, são apenas três comandos simples:

  • prepare () para onde você envia uma consulta com espaços reservados
  • bind_param, onde você envia uma string com tipos ("s" é para string e você pode usá-la para qualquer tipo, na verdade) e para variáveis ​​reais.
  • e execute ()

Dessa forma, você sempre pode ter certeza de que nenhum erro de sintaxe SQL pode ser causado pelos dados que você adicionou à consulta! Como bônus, esse código também é à prova de balas contra a injeção de SQL!

Porém, existe uma pitada de sal, pois executar uma consulta SELECT com instruções preparadas pelo mysqli pode ser mais complicado. Por isso, sugiro escolher o DOP como seu driver de banco de dados por vários motivos .

Estou tentando criar uma consulta SQL para inserir informações do usuário em um banco de dados. As variáveis $fname e $lname contêm valores corretos ("John" e "Doe"), mas a consulta falha. Aqui está o meu código:

$fname = $_POST['first_name'];
$lname = $_POST['last_name'];  
$sql = "INSERT INTO users (fname, lname) VALUES ($fname, $lname)";
mysqli_query($conn, $sql);

depois de verificar a mensagem de erro, descobri que esta consulta falha com o erro dizendo

Coluna desconhecida 'John' na 'lista de campos'

Como posso incluir corretamente variáveis ​​na consulta SQL para executá-la sem erro?

  • Esta questão não é sobre a sintaxe SQL com a qual estou familiarizado, mas sobre as regras de criação de uma consulta dinamicamente usando variáveis ​​em um script PHP.
  • Não quero um patch rápido que elimine apenas o erro imediato, mas uma solução de ponta que também é livre de erros e segura.




sql