PHP MySQL inserire più dati
Utilizzare MySQLi e MySQL DOP per inserire più dati
Funzione mysqli_multi_query () viene utilizzato per eseguire più istruzioni SQL.
Gli esempi che seguono sono a "MyGuests" tabella ha aggiunto tre nuovi record:
Esempi (MySQLi - Object Oriented)
$ Nomeserver = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "myDB";
// Crea collegamento
$ Conn = new mysqli ($ servername, $ username, $ password, $ dbname);
// Controlla collegamenti
if ($ conn-> connect_error) {
die ( "Connessione fallita:" $ conn-> connect_error.);
}
$ Sql = "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'John', 'Doe', '[email protected]'); ";
$ Sql. = "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'Maria', 'Moe', '[email protected]'); ";
$ Sql. = "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'Julie', 'Dooley', '[email protected]') ";
if ($ conn-> multi_query ($ sql) === true) {
echo "Il nuovo record viene inserito con successo";
} Else {
. Echo "Errore:" $ sql "<br>" $ conn-> errore; ..
}
$ Conn-> close ();
?>
Si noti che ogni istruzione SQL deve essere separato da un punto e virgola. |
Esempi (MySQLi - orientata ai processi)
$ Nomeserver = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "myDB";
// Crea collegamento
$ Conn = mysqli_connect ($ servername, $ username, $ password, $ dbname);
// Controlla collegamenti
if (! $ conn) {
die ( "Connessione fallita:" mysqli_connect_error ().);
}
$ Sql = "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'John', 'Doe', '[email protected]'); ";
$ Sql. = "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'Maria', 'Moe', '[email protected]'); ";
$ Sql. = "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'Julie', 'Dooley', '[email protected]') ";
if (mysqli_multi_query ($ conn, $ sql)) {
echo "Il nuovo record viene inserito con successo";
} Else {
. Echo "Errore:" $ sql "<br>" mysqli_error ($ conn); ..
}
mysqli_close ($ conn);
?>
Esempi di (DOP)
$ Nomeserver = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "myDBPDO";
try {
$ Conn = new PDO ( "mysql: host = $ servername; dbname = $ dbname", $ username, $ password);
// Imposta la modalità di errore PDO ad eccezione
$ Conn-> setAttribute (DOP :: ATTR_ERRMODE, DOP :: ERRMODE_EXCEPTION);
// Inizia transazione
$ Conn-> beginTransaction ();
// Istruzione SQL
$ Conn-> exec ( "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'John', 'Doe', '[email protected]') ");
$ Conn-> exec ( "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'Maria', 'Moe', '[email protected]') ");
$ Conn-> exec ( "INSERT INTO MyGuests (nome, cognome, e-mail)
VALORI ( 'Julie', 'Dooley', '[email protected]') ");
// Commit della transazione
$ Conn-> commit ();
echo "Il nuovo record viene inserito con successo";
}
catch (PDOException $ e)
{
// Se il rollback non riesce
$ Conn-> rollback ();
.. Echo $ sql "<br>" $ e-> getMessage ();
}
$ Conn = null;
?>
Utilizzare le istruzioni preparate
estensione mysqli fornisce un secondo modo per inserire dichiarazioni.
Abbiamo preparato dichiarazioni e dei parametri legati.
estensione mysql può trasmettere dati senza una dichiarazione o una query al database mysql. È possibile associare o variabili "legare" alle colonne.
Esempi (MySQLi utilizzando istruzioni preparate)
$ 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.);
} Else {
$ Sql = "INSERT INTO MyGuests VALORI (,, ???)";
// Per mysqli_stmt_prepare) Oggetti istruzione di inizializzazione (
$ Stmt = mysqli_stmt_init ($ conn);
// Dichiarazione Prepared
if (mysqli_stmt_prepare ($ stmt, $ sql)) {
// parametri Bind
mysqli_stmt_bind_param ($ stmt, 'sss', $ Nome, cognome $, $ e-mail);
// imposta i parametri ed effettuare
$ Nome = 'John';
$ Cognome = 'Doe';
$ Email = '[email protected]';
mysqli_stmt_execute ($ stmt);
$ Nome = 'Mary';
$ Cognome = 'Moe';
$ Email = '[email protected]';
mysqli_stmt_execute ($ stmt);
$ Firstname = 'Julie';
$ Cognome = 'Dooley';
$ Email = '[email protected]';
mysqli_stmt_execute ($ stmt);
}
}
?>
Possiamo vedere nell'esempio sopra utilizzando un sistema modulare per affrontare il problema. Siamo in grado di creare un blocco di codice per una più facile lettura e gestione.
Nota parametri legati. Diamo un'occhiata a mysqli_stmt_bind_param () codice:
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
Gli argomenti vincolanti per una query e passare parametri al database. Il secondo parametro è "sss". Il seguente elenco mostra il tipo di parametro. s personaggio dice argomento mysql è una stringa.
Può essere i seguenti quattro parametri:
- i - integer
- d - numero a virgola mobile a doppia precisione
- s - la stringa
- b - un valore booleano
Ogni tipo di parametro deve essere specificato per garantire la sicurezza dei dati. Per tipo di giudizio in grado di ridurre il rischio di vulnerabilità di SQL injection.