2012-07-24 41 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