将变量传递给sql WHERE IN子句


Passing variable to sql WHERE IN clause

我看过一些关于这个话题的类似帖子,但我没有发现它们对我有用。

我有一个复选框列表,将文章id存储为一个值。这意味着当用户选中复选框时,id将作为字符串存储并发送给处理程序(类似于"blah,blah,blah")。我稍后将从数据库中删除这些id。

我的sql语句看起来像这样:"delete from article where art_id in (".$_GET['art_id'].")"

当然,这不起作用,因为$_GET['art_id']看起来像"blah,blah,blah,blah"而不是" 'blah', 'blah', 'blah', 'blah' "

网上的一些回答提到拆分字符串并使用正则表达式。我不知道最好的办法是什么。如果我有不清楚的地方,请问我,我会澄清的。多谢谢。

清理、内爆,然后插入字符串:

$ids = array();
$in = '';
if(isset($_GET['art_id']){
  foreach($_GET['art_id'] as $id){
    $ids[] = intval($id);
  }
  $in = implode(',', $ids);
}
$query = "delete from article where art_id in (".$in.")";

您可能需要在$_GET['art_id']为空的情况下做额外的检查,例如提供默认值或仅在您拥有id

时进行查询

您正在寻找implode函数

看到