首页 > 后端开发 > php教程 > PDO_MYSQL 和 PDO_MYSQLND 能否在一条语句中执行多个 SQL 查询?

PDO_MYSQL 和 PDO_MYSQLND 能否在一条语句中执行多个 SQL 查询?

Linda Hamilton
发布: 2024-12-23 13:22:54
原创
971 人浏览过

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

PDO 支持多个查询(PDO_MYSQL、PDO_MYSQLND)

尽管人们认为 PDO 不支持单个语句中的多个查询,但 PDO_MYSQL 和 PDO_MYSQLND 提供了此功能。

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板