首页 >后端开发 >php教程 >如何在 PHP 中使用 PDO 执行多个查询?

如何在 PHP 中使用 PDO 执行多个查询?

Barbara Streisand
Barbara Streisand原创
2024-12-25 16:27:10226浏览

How Can I Execute Multiple Queries with PDO in PHP?

PDO 支持多个查询:PDO_MYSQL 和 PDO_MYSQLND

传统的 PDO 本身不支持在单个语句中执行多个查询。但是,开发了 PDO_MYSQL 和 PDO_MYSQLND 来解决此限制。

PDO_MYSQL 和 PDO_MYSQLND

PDO_MYSQL 现在已被视为已弃用。事实上,从 PHP 5.3 开始,MySQL PDO 就默认使用 PDO_MYSQLND 驱动。

使用 PDO 执行多个查询

要使用 PDO 执行多个查询,您需要以下:

  • PHP 5.3
  • PDO_MYSQLND 驱动程序(作为默认 MySQL 驱动程序提供)
  • 模拟准备语句(PDO::ATTR_EMULATE_PREPARES 设置为 1)

使用 exec

对于带有常量的 SQL 查询值时,可以使用 exec() 方法:

$db->exec("
    DELETE FROM car;
    INSERT INTO car(name, type) VALUES ('car1', 'coupe');
    INSERT INTO car(name, type) VALUES ('car2', 'coupe');
");

使用准备好的语句

对于来自 PHP 变量的数据的查询,需要准备好的语句:

$stmt = $db->prepare("
    DELETE FROM car;
    INSERT INTO car(name, type) VALUES (:car1, :type1);
    INSERT INTO car(name, type) VALUES (:car2, :type2);
");

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

while ($stmt->nextRowset()) {
    echo $db->lastInsertId();
}

请注意,在这两种情况下,都必须设置 PDO::ATTR_EMULATE_PREPARES使用多个查询时为 1。

编码注意

使用模拟准备语句时,请确保在 DSN 中指定正确的编码,以防止潜在的 SQL 注入漏洞。

以上是如何在 PHP 中使用 PDO 执行多个查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn