Insérez plusieurs éléments de données dans MySQL à l'aide de MySQLi et PDO
La fonction mysqli_multi_query() peut être utilisée pour exécuter plusieurs instructions SQL.
L'exemple suivant ajoute trois nouveaux enregistrements à la table « MyGuests » :
Exemple (MySQLi - Orienté Objet)
<?php $ servername = " localhost " ; $username = " username " ; $ password = " password " $ dbname = " myDB " ; $conn = nouveau mysqli ( $servername , $username , $password , $dbname ) // Vérifiez le lien ; si ( $conn -> erreur_connexion ) { die ( " Échec de la connexion : " . $conn -> connect_error ) } ; $sql = " INSERT INTO MyGuests (prénom, nom, email)VALUES ('John', 'Doe', '[email protected]'); " $ sql .= " INSERT INTO MyGuests (prénom, nom, email) VALEURS ('Mary', 'Moe', '[email protected]'); " ; $sql .= " INSÉRER INTO MyGuests (prénom, nom, email)VALUES ('Julie', 'Dooley', '[email protected]') " ; si ( $conn -> multi_query ( $sql ) === VRAI ) { écho " Nouvel enregistrement inséré avec succès " } autre { écho " Erreur : " . " <br> " . $conn -> fermer ( ) ? > | Veuillez noter que chaque instruction SQL doit être séparée par un point-virgule. |
---|
Exemple (MySQLi - Orienté procédure)
<?php $ servername = " localhost " ; $username = " username " ; $ password = " password " $ dbname = " myDB " ; $conn = mysqli_connect ( $servername , $username , $password , $dbname ) // Vérifiez le lien ; si ( ! $conn ) { die ( " Échec de la connexion : " . mysqli_connect_error ( ) ) } ; $sql = " INSERT INTO MyGuests (prénom, nom, email)VALUES ('John', 'Doe', '[email protected]'); " $ sql .= " INSERT INTO MyGuests (prénom, nom, email) VALEURS ('Mary', 'Moe', '[email protected]'); " ; $sql .= " INSÉRER INTO MyGuests (prénom, nom, email)VALUES ('Julie', 'Dooley', '[email protected]') " ; si ( mysqli_multi_query ( $conn , $sql ) ) { écho " Nouvel enregistrement inséré avec succès " } autre { écho " Erreur : " . " <br> " . mysqli_close ( $conn ) ? > Exemple (AOP)
<?php $ servername = " localhost " ; $ username = " username " ; $password = " password " $dbname = " myDBPDO " ; { $conn = nouveau PDO ( " mysql:host= $servername ;dbname= $dbname " , $username , $password ) // définit le mode d'erreur PDO sur exception ; $conn -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION ) // Démarrer la transaction ; $conn -> BeginTransaction ( ) ; // Instruction SQL $conn -> exec ( " INSERT INTO MyGuests (prénom, nom, email) VALUES ('John', '
Doe ', '[email protected]') " ) $ conn
- >
exec ( " INSERT INTO MyGuests (prénom , nom, email) VALEURS ('Mary', 'Moe', '[email protected]') " ) ; $conn -> exec ( " INSÉRER DANS LES VALEURS MyGuests (prénom, nom, e-mail
) ('Julie', 'Dooley', '[email protected]') " ) // Soumettre la transaction $conn - > commit ( ) ; " Nouvel enregistrement inséré avec succès " } attraper ( PDOException $e ) { // Si l'exécution échoue, rollback $conn - > rollback ( ) ; $ sql . " <br> " . $e -> getMessage ( ) ; $conn = nul ? > Utiliser des instructions préparées
L'extension mysqli fournit une deuxième façon d'insérer des instructions.
Nous pouvons préparer des instructions et lier des paramètres.
L'extension mysql peut envoyer des instructions ou des requêtes à la base de données mysql sans données. Vous pouvez associer ou « lier » de manière nématique des variables.
Exemple (MySQLi utilise des instructions préparées)
<?php $ servername = " localhost " ; $username = " username " ; $ password = " password " $ dbname = " myDB " ; $conn = nouveau mysqli ( $servername , $username , $password , $dbname ) // Détecter la connexion ; si ( $conn -> erreur_connexion ) { die ( " Échec de la connexion : " . $conn -> connect_error ) } ; autre { $ sql = " INSERT INTO MyGuests(firstname, lastname, email) VALUES(?, ?, ?) " // Initialiser l'objet d'instruction pour mysqli_stmt_prepare() $stmt = mysqli_stmt_init ( $conn ) // Instruction de prétraitement si ( mysqli_stmt_prepare ( $stmt , $sql ) ) { // Lier les paramètres mysqli_stmt_bind_param ( $stmt , ' sss ' , $firstname , $lastname , $email ) // Définir les paramètres et exécuter ; $ prénom = ' Jean ' ; $ nom = ' Biche ' ; $ email = ' [email protected] ' ; mysqli_stmt_execute ( $ stmt ) ; @exemple.com ' ; mysqli_stmt_execute ( $stmt ) ; $firstname = ' Julie ' $lastname = ' Dooley ' ; ; $ email = ' [email protected] ' ; mysqli_stmt_execute ( $stmt ) ; } ?> Nous pouvons voir que la modularité est utilisée pour résoudre des problèmes dans les exemples ci-dessus. Nous pouvons faciliter la lecture et la gestion en créant des blocs de code.
Faites attention à la liaison des paramètres. Regardons le code dans mysqli_stmt_bind_param() :
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
Cette fonction lie la requête de paramètres et transmet les paramètres à la base de données. Le deuxième paramètre est "sss". La liste suivante montre les types de paramètres. Le caractère s indique à MySQL que le paramètre est une chaîne.
Il peut s'agir des quatre paramètres suivants :
je - entier
d - nombre à virgule flottante double précision
s - chaîne
b - Valeur booléenne
Chaque paramètre doit spécifier un type pour garantir la sécurité des données. Le jugement de type peut réduire le risque de vulnérabilités d’injection SQL.