Yii框架参数化查询中IN查询只能查询一个的解决方法

 更新时间:2017年05月20日 12:00:25   作者:molaifeng   我要评论
这篇文章主要介绍了Yii框架参数化查询中IN查询只能查询一个的解决方法,结合实例形式分析了Yii框架中IN查询只能查一个的原因及FIND_IN_SET函数相关功能与使用技巧,需要的朋友可以参考下

本文实例讲述了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。这个函数在第一个参数包含一个逗号(‘,')时将无法正常运行。

【ps】strlist中由逗号组成的字符串,不能像平常习惯的那样,逗号右边加个空格,那是认不出来的。

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

相关文章

  • Yii模型操作之criteria查找数据库的方法

    Yii模型操作之criteria查找数据库的方法

    这篇文章主要介绍了Yii模型操作之criteria查找数据库的方法,结合实例形式分析了Yii模型中criteria的实例化与查询操作相关技巧,需要的朋友可以参考下
    2016-07-07
  • PHP结合Jquery和ajax实现瀑布流特效

    PHP结合Jquery和ajax实现瀑布流特效

    php+ajax+jquery实现无限瀑布流布局 宽度是一定的高度不定的瀑布流布局 也可以说是无缝拼图 当浏览器滚动到底部时候自动加载图片,非常的实用,需要的小伙伴可以参考下。
    2016-01-01
  • php结合redis高并发下发帖、发微博的实现方法

    php结合redis高并发下发帖、发微博的实现方法

    下面小编就为大家带来一篇php结合redis高并发下发帖、发微博的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • php微信开发之音乐回复功能

    php微信开发之音乐回复功能

    这篇文章主要为大家详细介绍了php微信开发之音乐回复功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • PHP中的表达式简述

    PHP中的表达式简述

    表达式是 PHP 最重要的基石。在 PHP 中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是“任何有值的东西”。这篇文章主要介绍了PHP中的表达式简述的相关资料,需要的朋友可以参考下
    2016-05-05
  • Yii框架表单提交验证功能分析

    Yii框架表单提交验证功能分析

    这篇文章主要介绍了Yii框架表单提交验证功能,结合实例形式分析了Yii框架表单提交验证功能的用法与相关注意事项,需要的朋友可以参考下
    2017-01-01
  • Laravel框架在本地虚拟机快速安装的方法详解

    Laravel框架在本地虚拟机快速安装的方法详解

    这篇文章主要介绍了Laravel框架在本地虚拟机快速安装的方法,结合实例形式较为详细的分析了Laravel框架的安装步骤、操作注意事项,并附带说明了centos7环境下php7编译安装curl扩展的具体操作步骤,需要的朋友可以参考下
    2018-06-06
  • CodeIgniter常用知识点小结

    CodeIgniter常用知识点小结

    这篇文章主要介绍了CodeIgniter常用知识点,包括跳转、常量定义、语言设置及支持get方法传参等技巧,需要的朋友可以参考下
    2016-05-05
  • Yii2 输出xml格式数据的方法

    Yii2 输出xml格式数据的方法

    这篇文章主要介绍了Yii2 输出xml格式数据的方法的相关资料,小编感觉非常具有参考价值,特此分享到脚本之家平台,供大家参考
    2016-05-05
  • php+mysql开源XNA 聚合程序发布 下载

    php+mysql开源XNA 聚合程序发布 下载

    php+mysql开源XNA 聚合程序发布 下载...
    2007-07-07

最新评论