2012-07-24 83 views
0

我是Yii的新手,我使用findAllBySql函数获取一些记录。Yii params无法正常工作

$users = User::model()->findAllBySql(" 
    SELECT * 
    FROM users u 
    WHERE replace(lower(u.firstname),' ','') LIKE '%:s%' 
    OR replace(lower(u.lastname),' ','') LIKE '%:s%'", 
    array(':s' => $search) 
); 

如果我硬编码的值:S,该功能可以正常工作所以好像Yii中是不会改变的参数:s。任何帮助是极大的赞赏!

问候, 泰斯

回答

4
$users = User::model()->findAllBySql(" 
    SELECT * 
    FROM users u 
    WHERE replace(lower(u.firstname),' ','') LIKE :s 
    OR replace(lower(u.lastname),' ','') LIKE :s", 
    array(':s' => '%' . $search . '%') 
); 
+0

非常感谢你,现在的工作!你能解释为什么我的方法不起作用吗? – Thijs 2012-07-28 09:00:42

+1

这只是一个语法错误。 [Yii中的参数绑定](http://www.yiiframework.com/doc/guide/1.1/en/database.dao#binding-parameters)基于[PHP的绑定](http://www.yiiframework.com /doc/guide/1.1/en/database.dao#binding-parameters)。报价不是预期的,参数的形式为':name'。基本上,只需使用':name',然后在那里定义。你的工作可能没有报价,但我不确定。 – ernie 2012-07-30 16:04:21