PHP MySQL memasukkan beberapa keping data

PHP MySQL Masukkan berbilang keping data

Gunakan MySQLi dan PDO untuk memasukkan berbilang keping data ke dalam MySQL

Fungsi mysqli_multi_query() boleh digunakan untuk melaksanakan berbilang pernyataan SQL.

Contoh berikut menambah tiga rekod baharu pada jadual "MyGuests":

Contoh (MySQLi - Berorientasikan Objek)

<?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 ('John', 'Doe', 'john@example.com');";
 $sql .= "INSERT INTO MyGuests (firstname, lastname, email)
 VALUES ('Mary', 'Moe', 'mary@example.com');";
 $sql .= "INSERT INTO MyGuests (firstname, lastname, email)
 VALUES ('Julie', 'Dooley', 'julie@example.com')";
 
 if ($conn->multi_query($sql) === TRUE) {
     echo "新记录插入成功";
 } else {
     echo "Error: " . $sql . "<br>" . $conn->error;
 }
 
 $conn->close();
 ?>

Sila ambil perhatian bahawa setiap pernyataan SQL mestilah No. terpisah.

Instance (MySQLi - Berorientasikan Prosedur)

<?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 ('John', 'Doe', 'john@example.com');";
 $sql .= "INSERT INTO MyGuests (firstname, lastname, email)
 VALUES ('Mary', 'Moe', 'mary@example.com');";
 $sql .= "INSERT INTO MyGuests (firstname, lastname, email)
 VALUES ('Julie', 'Dooley', 'julie@example.com')";
 
 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 ('John', 'Doe', 'john@example.com')");
     $conn->exec("INSERT INTO MyGuests (firstname, lastname, email) 
     VALUES ('Mary', 'Moe', 'mary@example.com')");
     $conn->exec("INSERT INTO MyGuests (firstname, lastname, email) 
     VALUES ('Julie', 'Dooley', 'julie@example.com')");
 
     // 提交事务
     $conn->commit();
     echo "新记录插入成功";
 }
 catch(PDOException $e)
 {
     // 如果执行失败回滚
     $conn->rollback();
     echo $sql . "<br>" . $e->getMessage();
 }
 
 $conn = null;
 ?>

Gunakan pernyataan yang disediakan

disediakan oleh sambungan mysqli Cara kedua digunakan untuk memasukkan pernyataan.

Kami boleh menyediakan penyata dan mengikat parameter.

Sambungan mysql boleh menghantar pernyataan atau pertanyaan ke pangkalan data mysql tanpa data. Anda boleh mengaitkan atau "mengikat" pembolehubah secara nematik.

Contoh (MySQLi menggunakan pernyataan yang disediakan)

<?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 VALUES(?, ?, ?)";
 
     // 为 mysqli_stmt_prepare() 初始化 statement 对象
     $stmt = mysqli_stmt_init($conn);
 
     //预处理语句
     if (mysqli_stmt_prepare($stmt, $sql)) {
         // 绑定参数
         mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
 
         // 设置参数并执行
         $firstname = 'John';
         $lastname = 'Doe';
         $email = 'john@example.com';
         mysqli_stmt_execute($stmt);
 
         $firstname = 'Mary';
         $lastname = 'Moe';
         $email = 'mary@example.com';
         mysqli_stmt_execute($stmt);
 
         $firstname = 'Julie';
         $lastname = 'Dooley';
         $email = 'julie@example.com';
         mysqli_stmt_execute($stmt);
     }
 }
 ?>

Kita dapat melihat bahawa modularisasi digunakan untuk menyelesaikan masalah dalam contoh di atas. Kita boleh mencapai pembacaan dan pengurusan yang lebih mudah dengan mencipta blok kod.

Beri perhatian kepada pengikatan parameter. Mari kita lihat kod dalam mysqli_stmt_bind_param():

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

Fungsi ini mengikat pertanyaan parameter dan Parameter dihantar ke pangkalan data. Parameter kedua ialah "sss" . Senarai berikut menunjukkan jenis parameter. Watak s memberitahu mysql bahawa parameter adalah rentetan.

boleh menjadi empat parameter berikut:

·        b - Nilai Boolean

Setiap parameter mesti menentukan jenis untuk memastikan keselamatan data. Pertimbangan jenis boleh mengurangkan risiko kelemahan suntikan SQL.

Meneruskan pembelajaran
||
<?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 ('John', 'Doe', 'john@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Mary', 'Moe', 'mary@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Julie', 'Dooley', 'julie@example.com')"; if (mysqli_multi_query($conn, $sql)) { echo "新记录插入成功"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?>
  • Cadangan kursus
  • Muat turun perisian kursus