我正在使用Yii CDbCommand从mysql中获取结果 .
我在mysql查询中记录SQL,并通过var_dump Yii的CDbCommand SQL记录SQL .
一样的 . 我通过CDbCommand-> queryAll()获得结果 .
但结果与在phpMyAdmin中运行相同的SQL不同 .
> SELECT `referer_url_id` FROM `trend_referer` WHERE
> ((`site_id` = '45654' and `date` between '20131211' and '20131211'))
> GROUP BY `referer_url_id` LIMIT 6
> OFFSET 30;
这个SQL . 我从queryAll和phpMyAdmin得到6个结果 .
但其中只有3个是相同的 . 其他3个是不同的 .
有点奇怪 .
EDIT: 最奇怪的是,几分钟后这个问题就消失了 .
并发生在另一个'LIMIT 6 OFFSET xx' .
xx不是一直都是一样的 .
所以我认为它是PDO或Yii中的任何缓存机制?
2 回答
试试这个
添加圆括号环绕
date between '20131211' and '20131211'
EDIT:
对于偏移误差'LIMIT 6 OFFSET xx' .
将您的查询更改为
我知道这是什么问题 . 因为Yii CDbCommand.php的连接SQL的buildQuery()函数使用
"\n"
作为换行而不是空格 .例如 .
SELECT * FROM table WHERE 1=1 GROUP BY field;
会变成
这会导致不同的结果 .
我修改了buildQuery() . 将"\n"替换为空格 . 我可以得到正确的结果集 .
我正在测试MySQL-5.5.18-log版本 . 我不知道这是MySQL错误还是Yii .