中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Yii框架參數化查詢中IN查詢只能查詢一個怎么辦

發布時間:2021-07-13 15:23:19 來源:億速云 閱讀:206 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Yii框架參數化查詢中IN查詢只能查詢一個怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體如下:

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

$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);
Array
(
  [0] => Array
    (
      [id] => 1013
    )
)

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

SELECT id FROM tb WHERE userid IN ( ? );

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

$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);
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。這個函數在第一個參數包含一個逗號(‘,')時將無法正常運行。

感謝各位的閱讀!關于“Yii框架參數化查詢中IN查詢只能查詢一個怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

任丘市| 长宁县| 长汀县| 武强县| 特克斯县| 十堰市| 土默特左旗| 石景山区| 宜宾县| 马公市| 都昌县| 海南省| 西城区| 涟水县| 新邵县| 萨嘎县| 施秉县| 儋州市| 盐城市| 建平县| 宁晋县| 横山县| 名山县| 汉寿县| 康平县| 西吉县| 凉山| 喜德县| 沂水县| 南昌县| 天峻县| 余庆县| 南陵县| 纳雍县| 宁晋县| 萍乡市| 咸阳市| 乌兰浩特市| 临桂县| 收藏| 准格尔旗|