mysql-In子句以避免循环


mysql In clause to avoid loop

我必须检索一个用户的历史记录,我有4个表,它们的数据相互依赖。我可以使用循环检索数据,但我使用了"where IN()"子句,并内爆了上一个查询的输出。但是,如果我提供给"where IN()"的列表为空,它将返回一个错误。是不是IN()不能为空?

当为IN子句内爆数组时,我会做两件事之一

1:检查是否需要在所有上运行查询

if(!empty($some_array)) {
    //run mysql query
}
else {
   // if you need to do something if the array is empty, such as error or set some defaults, do it here
}

2:数组初始化器中的一个值,它从来没有在数据库中(例如,如果我根据自动递增id进行选择,我会使用零作为默认数组值来停止空数据集的任何问题,因为零永远不会在我的id列中)。

$some_array = array(0);

您可以在开始处添加一个空值,例如IN (0,your values here)