天天看點

PHP MySQL 插入多條資料

mysqli_multi_query() 函數可用來執行多條SQL語句。

以下執行個體向 "MyGuests" 表添加了三條新的記錄:

<?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', '[email protected]');";

$sql .= "INSERT INTO MyGuests (firstname, lastname, email)

VALUES ('Mary', 'Moe', '[email protected]');";

VALUES ('Julie', 'Dooley', '[email protected]')";

if ($conn->multi_query($sql) === TRUE) {

echo "新記錄插入成功";

} else {

echo "Error: " . $sql . "<br>" . $conn->error;

$conn->close();

?>

PHP MySQL 插入多條資料

請注意,每個SQL語句必須用分号隔開。

$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) {

die("連接配接失敗: " . mysqli_connect_error());

if (mysqli_multi_query($conn, $sql)) {

echo "Error: " . $sql . "<br>" . mysqli_error($conn);

mysqli_close($conn);

$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', '[email protected]')");

VALUES ('Mary', 'Moe', '[email protected]')");

VALUES ('Julie', 'Dooley', '[email protected]')");

// 送出事務

$conn->commit();

catch(PDOException $e)

{

// 如果執行失敗復原

$conn->rollback();

echo $sql . "<br>" . $e->getMessage();

$conn = null;

mysqli 擴充提供了第二種方式用于插入語句。

我們可以預處理語句及綁定參數。

mysql 擴充可以不帶資料發送語句或查詢到mysql資料庫。 你可以向列關聯或 "綁定" 變量。

// 建立連接配接

// 檢測連接配接

$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, 'sss', $firstname, $lastname, $email);

// 設定參數并執行

$firstname = 'John';

$lastname = 'Doe';

$email = '[email protected]';

mysqli_stmt_execute($stmt);

$firstname = 'Mary';

$lastname = 'Moe';

$email = '[email protected]';

$firstname = 'Julie';

$lastname = 'Dooley';

$email = '[email protected]';

我們可以看到以上執行個體中使用子產品化來處理問題。我們可以通過建立代碼塊實作更簡單的讀取和管理。

注意參數的綁定。讓我們看下 mysqli_stmt_bind_param() 中的代碼:

該函數綁定參數查詢并将參數傳遞給資料庫。第二個參數是 "sss" 。以下清單展示了參數的類型。 s 字元告訴 mysql 參數是字元串。

可以是以下四種參數:

i - 整數

d - 雙精度浮點數

s -

字元串

b - 布爾值

每個參數必須指定類型,來保證資料的安全性。通過類型的判斷可以減少SQL注入漏洞帶來的風險。