仅提供一个答案-因为此错误非常普遍-这里有一些原因:
1)该
:parameter名称与错误绑定(typo?)不匹配。这就是这里发生的事情。他
:alias在SQL语句中,但已绑定
:username。因此,当尝试进行参数绑定时,Yii
/ PDO
:username在sql语句中找不到,这意味着“参数短”并引发了错误。
2)完全忘记
bindValue()为参数添加。这在Yii其他结构(如
$critera,具有数组或params(
$criteria->params= array(':bind1'=>'test', ':bind2'=>'test)))中更容易做到。3)使用
together和时,与CDataProvider分页和/或排序很奇怪
joins。没有特定,简单的方法可以对此进行表征,但是当在CDataProviders中使用复杂的查询时,我遇到了奇怪的问题,即删除了参数并发生了此错误。
解决Yii中这些问题的一种非常有用的方法是在配置文件中启用参数记录。将此添加到
db配置文件中的数组中:
'enableParamLogging'=>true,
并确保
CWebLogRoute在您的
log部分中设置了路线。这将打印出给出和错误的查询,以及它试图绑定的所有参数。超级有帮助!



