- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我知道 PDO 不支持在一个语句中执行多个查询。我一直在用 Google 搜索,发现很少有关于 PDO_MYSQL 和 PDO_MYSQLND 的帖子。
PDO_MySQL is a more dangerous application than any other traditional MySQL applications. Traditional MySQL allows only a single SQL query. In PDO_MySQL there is no such limitation, but you risk to be injected with multiple queries.
发件人:Protection against SQL Injection using PDO and Zend Framework (June 2010; by Julian)
似乎 PDO_MYSQL 和 PDO_MYSQLND 确实提供了对多个查询的支持,但我无法找到有关它们的更多信息。这些项目停止了吗?现在有什么方法可以使用 PDO 运行多个查询。
最佳答案
据我所知,PDO_MYSQLND
在 PHP 5.3 中取代了 PDO_MYSQL
。令人困惑的部分是名称仍然是 PDO_MYSQL
。所以现在ND是MySQL+PDO的默认驱动。
总的来说,一次执行多个查询需要:
PDO::ATTR_EMULATE_PREPARES
设置为 1
(默认)。或者,您可以避免使用准备好的语句并直接使用 $pdo->exec
。使用 exec
$db = new PDO("mysql:host=localhost;dbname=test", 'root', '');
// works regardless of statements emulation
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
$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", 'root', '');
// works not with the following set to 0. You can comment this line as 1 is default
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
$sql = "
DELETE FROM car;
INSERT INTO car(name, type) VALUES ('car1', 'coupe');
INSERT INTO car(name, type) VALUES ('car2', 'coupe');
";
$stmt = $db->prepare($sql);
$stmt->execute();
使用模拟的预处理语句时,请确保您在 DSN 中设置了正确的编码(反射(reflect)实际数据编码) (自 5.3.6 起可用)。否则 there can be a slight possibility for SQL injection if some odd encoding is used .
关于php - PDO 支持多个查询(PDO_MYSQL、PDO_MYSQLND),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346674/
我知道 PDO 不支持在一个语句中执行多个查询。我一直在谷歌搜索,发现很少有帖子谈论 PDO_MYSQL 和 PDO_MYSQLND。 PDO_MySQL is a more dangerous ap
我确实知道 PDO 不支持在一条语句中执行多个查询。我一直在 Google 上搜索,发现很少有讨论 PDO_MYSQL 和 PDO_MYSQLND 的帖子。 PDO_MySQL is a more d
我确实知道 PDO 不支持在一条语句中执行多个查询。我一直在 Google 上搜索,发现很少有讨论 PDO_MYSQL 和 PDO_MYSQLND 的帖子。 PDO_MySQL is a more d
我确实知道 PDO 不支持在一条语句中执行多个查询。我一直在 Google 上搜索,发现很少有讨论 PDO_MYSQL 和 PDO_MYSQLND 的帖子。 PDO_MySQL is a more d
我确实知道 PDO 不支持在一条语句中执行多个查询。我一直在 Google 上搜索,发现很少有讨论 PDO_MYSQL 和 PDO_MYSQLND 的帖子。 PDO_MySQL is a more d
我知道 PDO 不支持在一个语句中执行多个查询。我一直在用 Google 搜索,发现很少有关于 PDO_MYSQL 和 PDO_MYSQLND 的帖子。 PDO_MySQL is a more dan
我是一名优秀的程序员,十分优秀!