Php 将变量传递给sql WHERE IN子句

Php 将变量传递给sql WHERE IN子句,php,mysql,variables,where,Php,Mysql,Variables,Where,我看过一些关于这个话题的类似帖子,但我没有发现它们对我有用 我有一个复选框列表,这些复选框将文章ID存储为一个值。这意味着当用户选中复选框时,ID将存储为字符串并发送给处理程序(类似于:“等等等等”)。稍后我将从数据库中删除ID 我的sql语句如下所示: “从art_id所在的文章中删除(“.$\u GET['art_id'])” 当然,这不起作用,因为$_GET['art_id']看起来像“废话,废话,废话”,而不是“废话”,“废话”,“废话” 网上的一些答案提到拆分字符串和使用正则表达式。我

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

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

我的sql语句如下所示: “从art_id所在的文章中删除(“.$\u GET['art_id'])”

当然,这不起作用,因为$_GET['art_id']看起来像“废话,废话,废话”,而不是“废话”,“废话”,“废话”


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

您正在寻找
内爆
功能


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

$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.")";

如果$\u GET['art\u id']为空,您可能需要进行额外的检查,例如提供默认值或仅在您有id时进行查询

谢谢,Manu。我做了一个快速编辑,提到当它到达处理程序时,它是一个字符串,所以在将它插入sql语句之前它看起来像“等等等等”。如果它和
id
,它不应该是一个整数吗?是的,它是一个整数,并且在将它插入sql语句之前我还强制(int),但当我使用var_dump调试它,然后死掉时,它会在它周围显示引号。我以我在上面发布的方式连接了它,也许这就是问题所在?另外,当我让处理程序运行(remove die)时,它只删除一篇文章,而不是所有被检查的文章。如果您的
$\u GET['art\u id']
看起来像“1,3,6,7”(没有qoutes),那么它应该运行。在继续执行查询之前,请尝试打印
$\u GET['art\u id']
的值。我删除了变量之前的类型转换(int)并使其生效。我不知道强制(int)只返回一个数字。非常感谢,马努,谢谢,达米恩。我想出了这个问题的解决方案,但现在我正在努力解决一个类似的问题,但有字符串。我需要“废话,废话,废话”看起来像“废话”,“废话”,“废话”。在本例中,它已经是一个字符串,因此不需要内爆。我不能在sql语句中插入数组。如果您知道如何解决这个问题,我们将非常感谢您的帮助!这是另一个问题,不管怎样,原则是相似的