首頁 > 後端開發 > php教程 > PDO_MYSQL 和 PDO_MYSQLND 能否在一條語句中執行多個 SQL 查詢?

PDO_MYSQL 和 PDO_MYSQLND 能否在一條語句中執行多個 SQL 查詢?

Linda Hamilton
發布: 2024-12-23 13:22:54
原創
970 人瀏覽過

Can PDO_MYSQL and PDO_MYSQLND Execute Multiple SQL Queries in One Statement?

PDO 支援多個查詢(PDO_MYSQL、PDO_MYSQLND)

儘管人們認為PDO 不支援單一語句中的多個查詢,但PDO_MYSQL 和PDO_MYMYSQLND 提供了此功能。

PDO_MYSQL 和PDO_MYSQLND

PDO_MYSQL 在 PHP 5.3 中已被 PDO_MYSQLND 取代。令人困惑的是,名稱仍然是 PDO_MYSQL,但 PDO_MYSQLND 是 MySQL PDO 的預設驅動程式。

如何執行多個查詢

要同時執行多個查詢,必須滿足以下要求:

  • PHP 5.3 或更高版本
  • mysqlnd擴充
  • 模擬準備語句(PDO::ATTR_EMULATE_PREPARES 設定為1,這是 MySQL的預設值)

執行多個查詢的方法

使用exec:

$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "DELETE FROM car; 
INSERT INTO car(name, type) VALUES ('car1', 'coupe'); 
INSERT INTO car(name, type) VALUES ('car2', 'coupe');";

$db->exec($sql);
登入後複製

使用語句:

$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "DELETE FROM car; 
INSERT INTO car(name, type) VALUES (:car1, :type1); 
INSERT INTO car(name, type) VALUES (:car2, :type2);";

$stmt = $db->prepare($sql);
$stmt->execute(["car1" => "brand1", "type1" => "coupe", "car2" => "brand2", "type2" => "coupe"]);

// Check for errors and collect query results
do {
    echo $pdo->lastInsertId(); // for example
} while ($stmt->nextRowset());
登入後複製

注意:使用模擬準備語句時,設定適當的編碼在DSN 中以避免潛在的 SQL 注入漏洞。

以上是PDO_MYSQL 和 PDO_MYSQLND 能否在一條語句中執行多個 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板