设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
Yii框架参数化查询中IN查询只能查询一个的解决方法 ...
返回列表
查看:
1979
|
回复:
0
Yii框架参数化查询中IN查询只能查询一个的解决方法
[复制链接]
网络通达
当前离线
积分
7881
2647
主题
2647
帖子
7881
积分
论坛元老
论坛元老, 积分 7881, 距离下一级还需 9992118 积分
论坛元老, 积分 7881, 距离下一级还需 9992118 积分
积分
7881
发消息
电梯直达
楼主
发表于 2018-2-14 05:25:53
|
只看该作者
|
倒序浏览
|
阅读模式
本文实例讲述了Yii框架参数化查询中IN查询只能查询一个的解决方法。分享给大家供大家参考,具体如下:
在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。这个函数在第一个参数包含一个逗号(‘,')时将无法正常运行。
【ps】strlist中由逗号组成的字符串,不能像平常习惯的那样,逗号右边加个空格,那是认不出来的。
更多关于Yii相关内容感兴趣的读者可查看本站专题:《
Yii框架入门及常用技巧总结
》、《
php优秀开发框架总结
》、《
smarty模板入门基础教程
》、《
php面向对象程序设计入门教程
》、《
php字符串(string)用法总结
》、《
php+mysql数据库操作入门教程
》及《
php常见数据库操作技巧汇总
》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
Yii查询生成器(Query Builder)用法实例教程
Yii框架关联查询with用法分析
Yii的CDbCriteria查询条件用法实例
yii数据库的查询方法
Yii基于数组和对象的Model查询技巧实例详解
YII2数据库查询实践
详解YII关联查询
Yii多表联合查询操作详解
Yii2中使用join、joinwith多表关联查询
Yii中的relations数据关联查询及统计功能用法详解
Yii2增删改查之查询 where参数详细介绍
Yii2中关联查询简单用法示例
Yii2实现跨mysql数据库关联查询排序功能代码
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端