将变量传递给sql WHERE IN子句

时间:2013-05-11 07:16:24

标签: php mysql variables where

我已经查看了一些有关此主题的类似帖子,但我没有发现它们适合我。

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

我的sql语句看起来像这样:     “从文章中删除art_id in(”。$ _ GET ['art_id']。“)”

当然,这不起作用,因为$ _GET ['art_id']看起来像“等等,等等,等等,而不是''等等','等等','等等','等等'”< / p>

网上的一些答案提到了拆分字符串和使用正则表达式。我不确定最好的方法是什么。如果我对某些事情不清楚,请询问,我会澄清。非常感谢。

2 个答案:

答案 0 :(得分:2)

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

$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时进行查询

答案 1 :(得分:1)

您正在寻找implode功能

See here