《PHP編程:Yii框架參數化查詢中IN查詢只能查詢一個的解決方法》要點:
本文介紹了PHP編程:Yii框架參數化查詢中IN查詢只能查詢一個的解決方法,希望對您有用。如果有疑問,可以聯系我們。
相關主題:YII框架
PHP實例本文實例講述了Yii框架參數化查詢中IN查詢只能查詢一個的解決方法.分享給大家供大家參考,具體如下:
PHP實例在yii框架中使用參數化進行IN查詢時,結果不如所愿
PHP實例
$sql =<<<SQL
SELECT id FROM tb WHERE id IN(:ids)
SQL;
$db = GeneralService::getSlaveDB();
$result = $db->createCommand($sql)->query([':ids' => '1013,1015,1017'])->readAll();
print_r($result);
PHP實例
Array
(
[0] => Array
(
[id] => 1013
)
)
PHP實例于是翻了yii框架中相關源碼,發現采用的是pdo查詢,于是又查詢了pdo相關資料,知道了原因:不能讓占位符代替一組值.
PHP實例
SELECT id FROM tb WHERE userid IN ( ? );
PHP實例既然知道了原因,那么就找到替代的方法,FIND_IN_SET正好可以滿足
PHP實例
$sql =<<<SQL
SELECT id FROM tb WHERE FIND_IN_SET(id, :ids)
SQL;
$db = GeneralService::getSlaveDB();
$result = $db->createCommand($sql)->query([':ids' => '1013,1015,1017'])->readAll();
print_r($result);
PHP實例
Array
(
[0] => Array
(
[id] => 1013
)
[1] => Array
(
[id] => 1015
)
[2] => Array
(
[id] => 1017
)
)
PHP實例簡單科普下FIND_IN_SET函數
PHP實例
FIND_IN_SET(str,strlist)
PHP實例假如字符串str在由N子鏈組成的字符串列表strlist中,則返回值的范圍在 1 到 N 之間.
PHP實例一個字符串列表就是一個由一些被 ‘,' 符號分開的子鏈組成的字符串.如果第一個參數是一個常數字符串,而第二個是type SET列,則?? FIND_IN_SET() 函數被優化,使用比特計算.
PHP實例如果str不在strlist 或strlist 為空字符串,則返回值為 0 .如任意一個參數為NULL,則返回值為 NULL.這個函數在第一個參數包含一個逗號(‘,')時將無法正常運行.
PHP實例【ps】strlist中由逗號組成的字符串,不能像平常習慣的那樣,逗號右邊加個空格,那是認不出來的.
PHP實例更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
PHP實例希望本文所述對大家基于Yii框架的PHP程序設計有所幫助.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/769.html