国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

Yii框架參數化查詢中IN查詢只能查詢一個的解決方法

2024-05-04 23:57:23
字體:
來源:轉載
供稿:網友

本文實例講述了Yii框架參數化查詢中IN查詢只能查詢一個的解決方法。分享給大家供大家參考,具體如下:

在yii框架中使用參數化進行IN查詢時,結果不如所愿

$sql =<<<SQLSELECT id FROM tb WHERE id IN(:ids)SQL;$db = GeneralService::getSlaveDB();$result = $db->createCommand($sql)->query([':ids' => '1013,1015,1017'])->readAll();print_r($result);
Array(  [0] => Array    (      [id] => 1013    ))

于是翻了yii框架中相關源碼,發現采用的是pdo查詢,于是又查詢了pdo相關資料,知道了原因:不能讓占位符代替一組值。

SELECT id FROM tb WHERE userid IN ( ? );

既然知道了原因,那么就找到替代的方法,FIND_IN_SET正好可以滿足

$sql =<<<SQLSELECT 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);
Array(  [0] => Array    (      [id] => 1013    )  [1] => Array    (      [id] => 1015    )  [2] => Array    (      [id] => 1017    ))

簡單科普下FIND_IN_SET函數

FIND_IN_SET(str,strlist)

假如字符串str在由N子鏈組成的字符串列表strlist中,則返回值的范圍在 1 到 N 之間。

一個字符串列表就是一個由一些被 ‘,' 符號分開的子鏈組成的字符串。如果第一個參數是一個常數字符串,而第二個是type SET列,則   FIND_IN_SET() 函數被優化,使用比特計算。

如果str不在strlist 或strlist 為空字符串,則返回值為 0 。如任意一個參數為NULL,則返回值為 NULL。這個函數在第一個參數包含一個逗號(‘,')時將無法正常運行。

【ps】strlist中由逗號組成的字符串,不能像平常習慣的那樣,逗號右邊加個空格,那是認不出來的。

希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 军事| 万年县| 福贡县| 拉萨市| 石嘴山市| 长汀县| 福泉市| 萝北县| 黄石市| 靖安县| 韩城市| 平邑县| 柞水县| 富源县| 和田市| 澄城县| 山东省| 阿城市| 收藏| 景宁| 南城县| 华池县| 图们市| 佛学| 曲松县| 化州市| 曲阳县| 江阴市| 东平县| 娄底市| 醴陵市| 沙洋县| 张家界市| 通城县| 临湘市| 葫芦岛市| 商水县| 巴里| 三原县| 台南县| 定州市|