PHP MySQL insérer plusieurs données
Utilisez MySQLi et PDO MySQL pour insérer plusieurs données
fonction mysqli_multi_query () est utilisée pour exécuter plusieurs instructions SQL.
Les exemples suivants sont "MyGuests" tableau ajouté trois nouveaux records:
Exemples (MySQLi - Orienté Objet)
$ Servername = "localhost";
$ Nom d'utilisateur = "username";
$ Password = "mot de passe";
$ Dbname = "myDB";
// Créer un lien
$ Conn = new mysqli ($ servername, $ username, $ password, $ dbname);
// Vérifier les liens
if ($ connect_error conn->) {
die ( "Échec de la connexion:" $ conn-> connect_error.);
}
$ Sql = "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'John', 'Doe' '[email protected]',); ";
$ Sql. = "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'Mary', 'Moe' '[email protected]',); ";
$ Sql. = "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'Julie', 'Dooley', '[email protected]') ";
if ($ conn-> multi_query ($ sql) === TRUE) {
echo "Le nouvel enregistrement est inséré avec succès";
} Else {
. Echo "Erreur:" $ sql "<br>" $ conn-> erreur; ..
}
$ Conn-> close ();
?>
Notez que chaque instruction SQL doit être séparé par un point-virgule. |
Exemples (MySQLi - orienté processus)
$ Servername = "localhost";
$ Nom d'utilisateur = "username";
$ Password = "mot de passe";
$ Dbname = "myDB";
// Créer un lien
$ Conn = mysqli_connect ($ servername, $ username, $ password, $ dbname);
// Vérifier les liens
if (! $ conn) {
die ( "Échec de la connexion:" mysqli_connect_error ().);
}
$ Sql = "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'John', 'Doe' '[email protected]',); ";
$ Sql. = "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'Mary', 'Moe' '[email protected]',); ";
$ Sql. = "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'Julie', 'Dooley', '[email protected]') ";
if (mysqli_multi_query ($ conn, $ sql)) {
echo "Le nouvel enregistrement est inséré avec succès";
} Else {
. Echo "Erreur:" $ sql "<br>" mysqli_error ($ conn); ..
}
mysqli_close ($ conn);
?>
Des exemples de (AOP)
$ Servername = "localhost";
$ Nom d'utilisateur = "username";
$ Password = "mot de passe";
$ Dbname = "myDBPDO";
try {
$ Conn = new PDO ( "mysql: host = $ servername; dbname = $ dbname", $ username, $ password);
// Définir le mode d'erreur PDO à exception
$ Conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
// Démarre transaction
$ Conn-> beginTransaction ();
// Instruction SQL
$ Conn-> exec ( "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'John', 'Doe' '[email protected]',) ");
$ Conn-> exec ( "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'Mary', 'Moe', '[email protected]') ");
$ Conn-> exec ( "INSERT INTO MyGuests (nom, prénom, email)
VALUES ( 'Julie', 'Dooley' '[email protected]',) ");
// Valider la transaction
$ Conn-> commit ();
echo "Le nouvel enregistrement est inséré avec succès";
}
catch (PDOException $ e)
{
// Si la restauration échoue
$ Conn-> rollback ();
.. Echo $ sql "<br>" $ e-> getMessage ();
}
$ Conn = null;
?>
Utilisez les instructions préparées
extension mysqli fournit une deuxième façon d'insérer des déclarations.
Nous avons préparé les états et les paramètres liés.
l'extension mysql peut transmettre des données sans une déclaration ou une requête à la base de données mysql. Vous pouvez associer ou variables "bind" aux colonnes.
Exemples (MySQLi utilisant des requêtes préparées)
$ Servername = "localhost";
$ Nom d'utilisateur = "username";
$ Password = "mot de passe";
$ Dbname = "myDB";
// Création d'une connexion
$ Conn = new mysqli ($ servername, $ username, $ password, $ dbname);
// Test de connexion
if ($ connect_error conn->) {
die ( "Échec de la connexion:" $ conn-> connect_error.);
} Else {
$ Sql = "INSERT INTO MyGuests VALUES (,, ???)";
// Pour mysqli_stmt_prepare () objets d'états d'initialisation
$ Stmt = mysqli_stmt_init ($ conn);
// Déclaration préparée
if (mysqli_stmt_prepare ($ stmt, $ sql)) {
// paramètres Bind
mysqli_stmt_bind_param ($ stmt, 'sss', $ prenom, $ lastname, $ email);
// Définir les paramètres et effectuer
$ Prenom = 'John';
$ Nom = 'Doe';
$ Email = '[email protected]';
mysqli_stmt_execute ($ stmt);
$ Prenom = 'Mary';
$ Lastname = 'Moe';
$ Email = '[email protected]';
mysqli_stmt_execute ($ stmt);
$ Prenom = 'Julie';
$ Lastname = 'Dooley';
$ Email = '[email protected]';
mysqli_stmt_execute ($ stmt);
}
}
?>
Nous pouvons voir dans l'exemple ci-dessus en utilisant un système modulaire pour traiter le problème. Nous pouvons créer un bloc de code pour faciliter la lecture et la gestion.
Remarque paramètres liés. Regardons mysqli_stmt_bind_param () code:
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
Les arguments de liaison à une requête et passer des paramètres à la base de données. Le deuxième paramètre est "sss". La liste suivante indique le type du paramètre. s caractère dit argument mysql est une chaîne.
Il peut être les quatre paramètres suivants:
- i - entier
- d - double précision nombre à virgule flottante
- s - la chaîne
- b - une valeur booléenne
Chaque type de paramètre doit être spécifié pour assurer la sécurité des données. Par type de jugement peut réduire le risque de SQL vulnérabilité d'injection.