用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3169|回复: 8
收起左侧

[版本 3.x] 关于where_in中array的疑问

[复制链接]
发表于 2016-12-26 00:10:23 | 显示全部楼层 |阅读模式
$arr=$this->db->select(*)->from($_table)->get()->result_array();

$list=array_column($arr,'关联字段int类型');

$query=$this->db->select('*')->from('表名')->where_in('ID',$list)->get()->result_array();

不是说好的where_in('字段',array)的吗?为什么这样还会报错呢?

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 3

SELECT * FROM `operationbutton` WHERE `ID` IN()

Filename: C:/wwwroot/Task/system/database/DB_driver.php

Line Number: 691

 楼主| 发表于 2016-12-26 00:11:55 | 显示全部楼层
我单独新建一个$list2=('1','2','3')的数组 又正常不报错,使用var_dump输出了$list 和 $list2  输出值没任何区别啊,都不是array吗?
发表于 2016-12-26 09:05:41 | 显示全部楼层
ddyg110 发表于 2016-12-26 00:11
我单独新建一个$list2=('1','2','3')的数组 又正常不报错,使用var_dump输出了$list 和 $list2  输出值没任 ...

看提示是因为你的$list为空数组,括号里面没有内容的话,MySQL是无法执行的
 楼主| 发表于 2016-12-26 20:36:47 | 显示全部楼层
Michael锐生 发表于 2016-12-26 09:05
看提示是因为你的$list为空数组,括号里面没有内容的话,MySQL是无法执行的 ...

可是却是有内容的呀,我用var_dump都打印出来。
 楼主| 发表于 2016-12-26 21:17:37 | 显示全部楼层
Michael锐生 发表于 2016-12-26 09:05
看提示是因为你的$list为空数组,括号里面没有内容的话,MySQL是无法执行的 ...

我输出$list 就是一个数组信息  和我自己定义的$list2输出的信息是一模一样的。

所以我就纳闷就纳闷这,var_dump都能输出出来的数组,为什么到where_in里头就变成空数组了呢。
 楼主| 发表于 2016-12-26 21:36:24 | 显示全部楼层

关于where_in中array的疑问

$arr=$this->db->select(*)->from($_table)->get()->result_array();

$list=array_column($arr,'关联字段int类型');

$query=$this->db->select('*')->from('表名')->where_in('ID',$list)->get()->result_array();

不是说好的where_in('字段',array)的吗?为什么这样还会报错呢?

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 3

SELECT * FROM `operationbutton` WHERE `ID` IN()

Filename: C:/wwwroot/Task/system/database/DB_driver.php

Line Number: 691



我单独新建一个$list2=('1','2','3')的数组 又正常不报错,使用var_dump输出了$list 和 $list2  输出值没任何区别啊,都不是array吗?

备注 $list输出是有值的 也是array类型。

 楼主| 发表于 2016-12-26 22:42:05 | 显示全部楼层

输出array

输出array


输出值

输出值



输出来的都是array

但是执行这个就提示上面的错误,

$query=$this->db->select('*')->from($this->_operationbutton)->where_in('ID',$list)->get()->result_array();


如果换成  $list2 就不报错。
发表于 2016-12-27 00:18:18 | 显示全部楼层
经过测试,我这里没有问题,下载一个干净的 CI 再试试呢?
发表于 2016-12-27 10:49:24 | 显示全部楼层
ddyg110 发表于 2016-12-26 21:17
我输出$list 就是一个数组信息  和我自己定义的$list2输出的信息是一模一样的。

所以我就纳闷就纳闷这, ...

是不是你方法是执行了多次,输出的时候是执行第一次,执行第二次的时候就出错,你可以设置断点然后一步一步调,看哪里出了问题

本版积分规则