Il miglior tutorial PHP MySQL istruzioni preparate Nel 2024, in questo tutorial puoi imparare le istruzioni preparate e parametri associati,MySQLi istruzioni preparate,Esempi (MySQLi utilizzando istruzioni preparate),DOP istruzioni preparate in,Esempi (DOP utilizzando istruzioni preparate),

PHP MySQL istruzioni preparate

istruzioni preparate per evitare l'iniezione di MySQL è molto utile.


le istruzioni preparate e parametri associati

dichiarazioni preparate per l'esecuzione di una pluralità di la stessa istruzione SQL, ed eseguire in modo più efficiente.

Opere di istruzioni preparate come segue:

  1. Pretrattamento: Creare un comunicato modello SQL inviata al database. Il valore del parametro riservato "?" Mark. Ad esempio:

    INSERT 
    	INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
  2. analisi del database, compilare, eseguire l'ottimizzazione delle query SQL dichiarazioni template, e memorizza il risultato non viene emesso.

  3. Esecuzione: Infine, i valori dei parametri passati all'applicazione vincolante ( "?" Mark), Database esegue le istruzioni. Le applicazioni possono essere eseguite più volte, se il valore del parametro non è la stessa.

Rispetto alla esecuzione diretta delle istruzioni SQL, dichiarazione preparata ha due vantaggi principali:

  • prepared statement riduce drasticamente i tempi di analisi, solo una query (anche se vengono eseguite le istruzioni).

  • parametri legati per ridurre la larghezza di banda del server, è sufficiente inviare una query con parametri anziché l'intera istruzione.

  • prepared statement contro SQL injection è molto utile, perché dopo utilizzare protocolli diversi per inviare i valori dei parametri per garantire la legittimità dei dati.


MySQLi istruzioni preparate

L'esempio seguente utilizza il MySQLi in una dichiarazione preparata, e si legano i parametri corrispondenti:

Esempi (MySQLi utilizzando istruzioni preparate)

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

// Crea collegamento
$ Conn = new mysqli ($ servername, $ username, $ password, $ dbname);

// Prova connessione
if ($ conn-> connect_error) {
die ( "Connessione fallita:" $ conn-> connect_error.);
}

// Pretrattamento e vincolante
$ Stmt = $ conn-> prepare ( "INSERT INTO MyGuests (nome, cognome, e-mail) VALORI (,,) ???");
$ Stmt-> bind_param ( "sss", $ Nome, cognome $, $ e-mail);

// imposta i parametri ed effettuare
$ Nome = "John";
$ Cognome = "Rossi";
$ Email = "john@example.com";
$ Stmt-> execute ();

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

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

echo "Il nuovo record viene inserito con successo";

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

Analisi ciascuna riga di codice nei seguenti esempi:

"INSERT INTO MyGuests (nome, cognome, e-mail) VALORI (?,?,?)"

In istruzioni SQL, si usa il punto interrogativo (?), Qui possiamo sostituire il punto interrogativo intero, stringa, a doppia precisione in virgola mobile, e valori booleani.

Quindi, diamo un'occhiata a bind_param () la funzione:

$ Stmt-> bind_param ( "sss", $ Nome, cognome $, $ e-mail);

I parametri SQL funzione bind, e raccontano il valore del parametro del database. "sss" tipi di dati dei parametri di elaborazione colonna per i restanti parametri. s carattere indica al database che la stringa di parametri.

Ci sono quattro tipi di parametri:

  • I - intero (intero)
  • d - doppia (punto doppia precisione floating)
  • s - string (stringa)
  • b - BLOB (binary large object: grandi oggetti binari)

Ogni parametro è necessario per specificare il tipo.

Il parametro di tipo di dati indica al database, è possibile ridurre il rischio di SQL injection.

nota Nota: Se si desidera inserire dati aggiuntivi (input dell'utente), la verifica dei dati è molto importante.


DOP istruzioni preparate in

I seguenti esempi che utilizzano istruzioni preparate in DOP e parametri vincolanti:

Esempi (DOP utilizzando istruzioni preparate)

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

try {
$ Conn = new PDO ( "mysql: host = $ servername; dbname = $ dbname", $ username, $ password);
// Imposta l'eccezione modalità di errore DOP
$ Conn-> setAttribute (DOP :: ATTR_ERRMODE, DOP :: ERRMODE_EXCEPTION);

// parametri legano pretrattamento e SQL
$ Stmt = $ conn-> prepare ( "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI (: cognome ,: cognome ,: e-mail) ");
$ Stmt-> BindParam ( ': cognome', $ firstname);
$ Stmt-> BindParam ( ': Cognome', $ cognome);
$ Stmt-> BindParam ( ': E-mail', $ e-mail);

// Fila Inserire
$ Nome = "John";
$ Cognome = "Rossi";
$ Email = "john@example.com";
$ Stmt-> execute ();

// Inserire un'altra riga
$ Nome = "Maria";
$ Cognome = "Moe";
$ Email = "mary@example.com";
$ Stmt-> execute ();

// Inserire un'altra riga
$ Nome = "Julie";
$ Cognome = "Dooley";
$ Email = "julie@example.com";
$ Stmt-> execute ();

echo "Il nuovo record viene inserito con successo";
}
catch (PDOException $ e)
{
it Echo $ sql "<br>" $ e-> getMessage ();
}
$ Conn = null;
?>

PHP MySQL istruzioni preparate
10/30