执行多个查询的效率:
这个与nextRowset()
函数移动查询
$stmt = $db->query("SELECT 1; SELECT 2;");
$info1 = $stmt->fetchAll();
$stmt->nextRowset();
$info2 = $stmt->fetchAll();
或多个执行计划,这是更容易管理?
$info1 = $db->query("SELECT 1;")->fetchAll();
$info2 = $db->query("SELECT 2;")->fetchAll();
代码的性能可能是相似的。
对我来说,底部的代码对你的软件设计更有效,因为:
- 它更容易读
- 可以用更少的错误机会更改,因为它们每个只处理1个查询
- 单个查询及其交互可以很容易地移动到不同的功能,可以单独测试
这就是为什么我觉得整体效率(不仅仅是数据从DB到PHP返回给用户的速度有多快,还有代码的可维护性/重构性)在底层的代码会更好。
SQL注入;当您一次发出多个语句时,被黑客攻击更容易。所以,不要这样做。
如果您确实经常需要它,那么编写一个存储过程来通过一个CALL
语句执行所有步骤。这将返回多个"rowsets",因此需要类似的代码。