$ids = array(1,2,3);
$in = implode(',',$ids);
$query = "SELECT * FROM user where user_id IN ($in) ";
Run Code Online (Sandbox Code Playgroud)
查询没有问题.但是什么时候$ids是空阵$ids = array();
我正确地得到了sql查询错误,因为SELECT * FROM user where user_id IN ()它不是一个有效的查询.
如何在不检查空数组的情况下避免这种情况,即无论如何都要进行查询运行?
$ in为空时,不应运行查询.我认为你需要的是这样的
$in = implode(',',$ids);
if($in) {
$query = "SELECT * FROM user where user_id IN ($in) ";
}
else {
//alternate scenario here
}
Run Code Online (Sandbox Code Playgroud)
编辑
$in = implode("','",$ids); // generate like 1','2
$query = "SELECT * FROM user where user_id IN ('$in') "; // if has 1','2 surrond it with quote make it IN('1','2') and if empty than IN('')
Run Code Online (Sandbox Code Playgroud)
管理这个的最佳方法是:
$in = implode("','",$ids); // generate like 1','2
$query = "SELECT * FROM user where user_id IN ('$in') "; // if has 1','2 surrond it with quote make it IN('1','2') and if empty than IN('')
Run Code Online (Sandbox Code Playgroud)
这样可以省去if/else结构和其他所有内容
你可以在$ ids字符串之前加0.毕竟No ID将从任何数据库中的0开始.
或者你可以这样做..
$sql = "SELECT * FROM user where ".($ids != ''? "user_id IN ($ids)" : " 1=1");
Run Code Online (Sandbox Code Playgroud)