O melhor tutorial PHP MySQL preparadas demonstrações em 2024. Neste tutorial você pode aprender instruções preparadas e parâmetros encadernados,MySQLi preparado declarações,Exemplos (MySQLi usando instruções preparadas),DOP preparado declarações em,Exemplos (DOP usando instruções preparadas),

PHP MySQL preparadas demonstrações

declarações preparadas para evitar MySQL injecção é muito útil.


instruções preparadas e parâmetros encadernados

declarações preparadas para a execução de uma pluralidade de a mesma instrução SQL, e executar de forma mais eficiente.

Obras de declarações preparadas como se segue:

  1. O pré-tratamento: Criar uma declaração de modelo SQL enviada para o banco de dados. O valor do parâmetro reservados marca "?". Por exemplo:

    INSERT 
    	INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
  2. análise de banco de dados, compilar, executar a otimização de consulta template declarações SQL, e armazena o resultado não é emitido.

  3. Execução: Finalmente, os valores dos parâmetros passados ​​para a ligação (marca "?") A aplicação, banco de dados executa as instruções. As aplicações podem ser executadas muitas vezes, se o valor do parâmetro não é o mesmo.

Em comparação com a execução direta de instruções SQL, instrução preparada tem duas vantagens principais:

  • declarações preparadas reduz drasticamente o tempo de análise, apenas uma consulta (embora as instruções são executadas).

  • parâmetros vinculados a reduzir a largura de banda do servidor, você só precisa enviar uma consulta de parâmetro em vez de toda a instrução.

  • declarações preparadas contra injeção de SQL é muito útil, porque depois de usar diferentes protocolos para enviar valores de parâmetros para garantir a legitimidade dos dados.


MySQLi preparado declarações

O exemplo a seguir usa a MySQLi em uma declaração preparada, e ligar os parâmetros correspondentes:

Exemplos (MySQLi usando instruções preparadas)

<? Php
$ Servername = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "myDB";

// Criar uma ligação
$ Conn = new mysqli ($ servername, $ username, $ password, $ dbname);

// Teste de conexão
if ($ conn-> connect_error) {
Die ( "A ligação falhou:" $ conn-> connect_error.);
}

// Pré-tratamento e vinculativa
$ Stmt = $ conn-> prepare ( "INSERT INTO MyGuests (nome, sobrenome, e-mail) VALUES (,,) ???");
$ Stmt-> bind_param ( "sss", $ firstname, $ sobrenome, $ email);

// Definir parâmetros e executar
$ Nome = "John";
$ Lastname = "Doe";
$ Mail = "john@example.com";
$ Stmt-> execute ();

$ Nome = "Maria";
$ Lastname = "Moe";
$ Mail = "mary@example.com";
$ Stmt-> execute ();

$ Nome = "Julie";
$ Lastname = "Dooley";
$ Mail = "julie@example.com";
$ Stmt-> execute ();

echo "O novo registro é inserido com sucesso";

$ Stmt-> close ();
$ Conn-> close ();
?>

Analisar cada linha de código nos seguintes exemplos:

"INSERT INTO MyGuests (nome, sobrenome, e-mail) VALUES (?,?,?)"

Em algumas instruções SQL, usamos o ponto de interrogação (?), Aqui podemos substituir o ponto de interrogação integer, string, de precisão dupla de ponto flutuante e valores booleanos.

Em seguida, vamos olhar para bind_param () função:

$ Stmt-> bind_param ( "sss", $ firstname, $ sobrenome, $ email);

Os parâmetros SQL função de ligação, e dizer o valor do parâmetro de banco de dados. "sss" tipos de dados de parâmetros de processamento de coluna para os restantes parâmetros. s personagem conta a base de dados que o parâmetro.

Há quatro tipos de parâmetros:

  • I - inteiro (inteiro)
  • d - double (duplo ponto flutuante de precisão)
  • s - string (string)
  • b - BLOB (binary large object: grandes objetos binários)

Cada parâmetro é necessário para especificar o tipo.

O parâmetro tipo de dados informa ao banco de dados, você pode reduzir o risco de injeção de SQL.

nota Nota: Se você deseja inserir dados adicionais (de entrada do usuário), a verificação dos dados é muito importante.


DOP preparado declarações em

Os exemplos a seguir usamos declarações preparadas em DOP e parâmetros de ligação:

Exemplos (DOP usando instruções preparadas)

<? Php
$ Servername = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "myDBPDO";

try {
$ Conn = new PDO ( "mysql: host = $ servername; dbname = $ dbname", $ username, $ password);
// Definir a excepção modo de erro PDO
$ Conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);

// parâmetros de vinculação pré-tratamento e SQL
$ Stmt = $ conn-> prepare ( "INSERT INTO MyGuests (nome, sobrenome, e-mail)
VALUES (: firstname ,: sobrenome ,: e-mail) ");
$ Stmt-> bindParam ( ': firstname', $ firstname);
$ Stmt-> bindParam ( ': sobrenome', $ sobrenome);
$ Stmt-> bindParam ( ': e-mail', $ email);

// Inserir linha
$ Nome = "John";
$ Lastname = "Doe";
$ Mail = "john@example.com";
$ Stmt-> execute ();

// Inserir outra linha
$ Nome = "Maria";
$ Lastname = "Moe";
$ Mail = "mary@example.com";
$ Stmt-> execute ();

// Inserir outra linha
$ Nome = "Julie";
$ Lastname = "Dooley";
$ Mail = "julie@example.com";
$ Stmt-> execute ();

echo "O novo registro é inserido com sucesso";
}
catch (PDOException $ e)
{
pt Eco $ sql "<br>" $ e-> getMessage ();
}
$ Conn = null;
?>

PHP MySQL preparadas demonstrações
10/30