PDO:一次发送多个语句而不使用exec()

时间:2013-05-31 14:48:13

标签: php pdo

我的选择语句看起来像这样:

CREATE TEMPORARY TABLE t1 AS(
    SELECT id, COUNT(*) AS count 
    FROM some_other_table 
    GROUP BY id);

ALTER TABLE t1 ADD UNIQUE INDEX (id);
SELECT * FROM t2 INNER JOIN t1 ON t1.id = t2.id

我正在使用以下PHP代码:

$pdo->query($sql)->fetchAll();

但是我收到错误,因为PDO不允许在一个查询中执行多个语句。

从我到目前为止所读到的,我应该使用exec()。但是exec()不会返回select语句的结果。我不需要针对此特定查询进行参数化,因此任何 unsafe 方法也都可以工作,因为查询本身对任何外部更改都是完全安全的。

现在我正在做的是将sql代码作为3个不同的语句执行。但我相信这比一次性执行要慢,并希望找到更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

与许多其他缺乏经验的开发人员一样,您在尝试优化代码时看起来错误。

虽然对数据库进行了多少次调用并不重要,但是创建临时表的想法是什么使您的代码效率低下。你必须摆脱这个非常缓慢的部分,而不是试图优化0.00001%

相关问题