ThinkPHP5.1x数据查询表达式报错,和5.0x版的有区别?

FlexUI
  • 115

原来5.0x版本的原来可以这么写,没有报错并且正常查询到数据!

$ids = array(
    0 => 121,
    1 => 125,
    2 => 135
);
$where=[];
$where['site_id'] = ['in',$ids];
$data = Db::name('site')->where($where)->count();

但是在5.1x版报 sql语句错误,具体错误代码如下!

SQLSTATE[42000]: Syntax error or access violation: 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 1

问:在5.1x版本中这个数组查询表达式应该怎么写?

回复
阅读 709
2 个回答

楼上正解 或者 使用

$data = Db::name('site')->whereIn($ids)->count();
$ids = array(
    0 => 121,
    1 => 125,
    2 => 135
);
$where=[];
array_push($where, ["id", "In", $ids]);
$data = Db::name('site')->where($where)->count();

个人更喜欢下面这种

明显就是

$where['site_id'] = ['in',$ids];

这句写错了,改成

$where['site_id'] = ['in',implode(',',$ids)];

遇到报错不要需要考虑其它的,先把sql语句打印出来再说

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏