Maison  >  Article  >  développement back-end  >  Comment insérer plusieurs éléments de données via PHP MySQL

Comment insérer plusieurs éléments de données via PHP MySQL

jacklove
jackloveoriginal
2018-05-07 14:03:423258parcourir

Nous voyons souvent des données insérées dans la base de données sur les sites Web. Cet article explique comment insérer plusieurs éléments de données dans la base de données.

Insérer plusieurs éléments de données dans MySQL à l'aide de MySQLi et la fonction PDO

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 = new mysqli($servername, $username, $password, $dbname);// 检查链接if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);} 
 $sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES (&#39;John&#39;, &#39;Doe&#39;, &#39;john@example.com&#39;);";$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES (&#39;Mary&#39;, &#39;Moe&#39;, &#39;mary@example.com&#39;);";$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES (&#39;Julie&#39;, &#39;Dooley&#39;, &#39;julie@example.com&#39;)"; 
if ($conn->multi_query($sql) === TRUE) {
    echo "新记录插入成功";} else {
    echo "Error: " . $sql . "<br>" . $conn->error;}
 $conn->close();?>



Veuillez noter que chaque instruction SQL doit être séparée par un point-virgule.

Instance (MySQLi - Procedural)

<?php$servername = "localhost";$username = "username";$password = "password";$dbname = "myDB"; 
// 创建链接$conn = mysqli_connect($servername, $username, $password, $dbname);// 检查链接if (!$conn) {
    die("连接失败: " . mysqli_connect_error());}
 $sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES (&#39;John&#39;, &#39;Doe&#39;, &#39;john@example.com&#39;);";$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES (&#39;Mary&#39;, &#39;Moe&#39;, &#39;mary@example.com&#39;);";$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES (&#39;Julie&#39;, &#39;Dooley&#39;, &#39;julie@example.com&#39;)"; 
if (mysqli_multi_query($conn, $sql)) {
    echo "新记录插入成功";} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);}
 mysqli_close($conn);?>

Instance (PDO)

<?php$servername = "localhost";$username = "username";$password = "password";$dbname = "myDBPDO"; 
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    // 开始事务
    $conn->beginTransaction();    // SQL 语句
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email) 
    VALUES (&#39;John&#39;, &#39;Doe&#39;, &#39;john@example.com&#39;)");    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email) 
    VALUES (&#39;Mary&#39;, &#39;Moe&#39;, &#39;mary@example.com&#39;)");    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email) 
    VALUES (&#39;Julie&#39;, &#39;Dooley&#39;, &#39;julie@example.com&#39;)"); 
    // 提交事务
    $conn->commit();    echo "新记录插入成功";}catch(PDOException $e){
    // 如果执行失败回滚
    $conn->rollback();    echo $sql . "<br>" . $e->getMessage();}
 $conn = null;?>

Utilisation d'instructions préparées

L'extension mysqli fournit les deux méthodes sont utilisés pour insérer des instructions.

Nous pouvons préparer des déclarations 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 = new mysqli($servername, $username, $password, $dbname);// 检测连接if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);} else {
    $sql = "INSERT INTO MyGuests(firstname, lastname, email)  VALUES(?, ?, ?)"; 
    // 为 mysqli_stmt_prepare() 初始化 statement 对象
    $stmt = mysqli_stmt_init($conn); 
    //预处理语句
    if (mysqli_stmt_prepare($stmt, $sql)) {
        // 绑定参数
        mysqli_stmt_bind_param($stmt, &#39;sss&#39;, $firstname, $lastname, $email); 
        // 设置参数并执行
        $firstname = &#39;John&#39;;        $lastname = &#39;Doe&#39;;        $email = &#39;john@example.com&#39;;        mysqli_stmt_execute($stmt); 
        $firstname = &#39;Mary&#39;;        $lastname = &#39;Moe&#39;;        $email = &#39;mary@example.com&#39;;        mysqli_stmt_execute($stmt); 
        $firstname = &#39;Julie&#39;;        $lastname = &#39;Dooley&#39;;        $email = &#39;julie@example.com&#39;;        mysqli_stmt_execute($stmt);    }}?

Nous pouvons voir que la modularisation est utilisée pour résoudre le problème dans l'exemple ci-dessus. Nous pouvons faciliter la lecture et la gestion en créant des blocs de code.

Faites attention à la liaison des paramètres. Jetons un coup d'œil au code dans mysqli_stmt_bind_param() :

mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);

Cette fonction lie les paramètres Interrogez et transmettez 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.

peut être les quatre paramètres suivants :

i - entier

d - nombre à virgule flottante double précision

s - chaîne

b - Valeur booléenne

Chaque paramètre doit préciser un type pour assurer la sécurité des données. Le jugement de type peut réduire le risque de vulnérabilités d’injection SQL.

Cet article explique en détail comment insérer plusieurs éléments de données via php. Pour plus de matériel d'apprentissage, veuillez faire attention au site Web chinois de php.

Recommandations associées :

Comment insérer des données dans MySQL via PHP

Comment créer une table MySQL via PHP

Comment créer une base de données via PHP MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn