Yii框架参数化查询中IN查询只能查询一个怎么办-创新互联

这篇文章给大家分享的是有关Yii框架参数化查询中IN查询只能查询一个怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联是一家专注于网站设计、做网站与策划设计,顺河网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:顺河等地区。顺河做网站价格咨询:028-86922220

具体如下:

在yii框架中使用参数化进行IN查询时,结果不如所愿

$sql =<<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 =<<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查询只能查询一个怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


网站栏目:Yii框架参数化查询中IN查询只能查询一个怎么办-创新互联
文章链接:http://bzwzjz.com/article/jjshh.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站设计公司 网站制作公司 网站建设 成都模版网站建设 成都网站建设 四川成都网站建设 外贸营销网站建设 成都网站建设 手机网站制作设计 app网站建设 成都品牌网站设计 手机网站制作 营销型网站建设 成都营销网站建设 梓潼网站设计 定制网站设计 网站制作 成都商城网站建设 手机网站建设套餐 成都网站设计 成都网站建设 营销网站建设