Latest web development tutorials
×

PHP corso

PHP corso PHP breve introduzione PHP installare PHP grammatica PHP variabile PHP echo/print PHP Tipi di dati PHP costante PHP stringa PHP operatori PHP If...Else PHP Switch PHP schieramento PHP Ordinamento di un array PHP superglobals PHP While circolazione PHP For circolazione PHP funzione PHP Variabili magici PHP Namespace PHP Object-Oriented

PHP modulo

PHP modulo PHP Forms Authentication PHP modulo - I campi obbligatori PHP modulo - e-mail di verifica e l'URL PHP esempio forma completa PHP $_GET variabile PHP $_POST variabile

PHP Tutorial avanzato

PHP array multidimensionali PHP data PHP contenere PHP file PHP File Upload PHP Cookie PHP Session PHP E-mail PHP sicurezza E-mail PHP Error PHP Exception PHP filtro PHP Filtro avanzato PHP JSON

PHP 7 nuove funzionalità

PHP 7 nuove funzionalità

PHP Database

PHP MySQL breve introduzione PHP MySQL collegamento PHP MySQL Creazione di un database PHP MySQL Creare una tabella di dati PHP MySQL inserire i dati PHP MySQL Inserire più dati PHP MySQL prepared statement PHP MySQL leggere i dati PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX breve introduzione AJAX PHP AJAX Database AJAX XML AJAX ricerca in tempo reale AJAX RSS Reader AJAX voto

PHP Manuale di riferimento

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Elaborazione immagini PHP RESTful

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 = "[email protected]";
$ Stmt-> execute ();

$ Nome = "Maria";
$ Cognome = "Moe";
$ Email = "[email protected]";
$ Stmt-> execute ();

$ Nome = "Julie";
$ Cognome = "Dooley";
$ Email = "[email protected]";
$ 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 = "[email protected]";
$ Stmt-> execute ();

// Inserire un'altra riga
$ Nome = "Maria";
$ Cognome = "Moe";
$ Email = "[email protected]";
$ Stmt-> execute ();

// Inserire un'altra riga
$ Nome = "Julie";
$ Cognome = "Dooley";
$ Email = "[email protected]";
$ Stmt-> execute ();

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