单个CakePHP查询()调用中的多个SQL语句?

时间:2013-11-26 01:12:14

标签: php mysql cakephp cakephp-2.0

我正在尝试做一些复杂的SQL,它要求我在一个语句中设置MySQL中的几个变量,然后在下一个语句中执行依赖于它们的查询。为此,我需要在单个$ Model-> query()调用中将这些命令发送到数据库。

双语句调用看起来与此类似,粘贴自this tutorial

set @num := 0, @type := '';

select type, variety, price,
  @num := if(@type = type, @num + 1, 1) as row_number,
  @type := type as dummy
from fruits force index(type)
group by type, price, variety
having row_number <= 2;

有趣的是,我找不到通过任何CakePHP模型方法(类似mysqli::multi_query)执行多个以分号分隔的SQL语句的方法。看来query()方法只执行这个多语句调用中的第一个语句。

如何在同一个电话中同时执行?

2 个答案:

答案 0 :(得分:1)

查看CakePHP API,当运行_execute函数时,它会爆炸;并将每个作为单独的查询运行:

api.cakephp.org/2.4/source-class-DboSource.html#__execute

我刚刚用两个查询进行了测试,运行了查询函数,虽然它确实运行了两个查询,但它只返回第一个查询中的数据。这就是你获得0行返回的原因(因为第一个查询是变量创建)。我确定这是一个Cake默认设置,因为它不知道在多个查询的情况下要返回什么。

答案 1 :(得分:0)

使用PDO-&gt;查询无法进行。如果您使用此处列出的PDP版本&gt; = 5.3(使用exec()),有一些解决方案:

https://stackoverflow.com/a/6461110/1935500