将列与多个值进行比较时无法删除行

时间:2014-03-14 10:19:23

标签: php mysql

如果一列具有特定值,并且如果另一列不是所提供的任何值(多个值),我想删除一行,但是我得到一个错误,说我的sql语法有问题。

代码:

$q = "DELETE FROM product_attributes WHERE product_id='$mpa' AND attribute_id NOT IN '$val_ids'";
$r = mysqli_query($dbc, $q);

这是$q在回显时的样子:

DELETE FROM product_attributes WHERE product_id='2' AND attribute_id NOT IN '5,6'

2 个答案:

答案 0 :(得分:0)

更改查询

$q = "DELETE FROM product_attributes WHERE product_id='$mpa' AND attribute_id NOT IN ($val_ids)";

您的查询必须与

类似
  DELETE FROM product_attributes WHERE product_id='2' AND attribute_id NOT IN (5,6)

NOT IN的正确形式

       NOT IN (values)

您将获得更多详细信息here

答案 1 :(得分:0)

当值为CSV格式时,您需要使用FIND_IN_SET

$val_ids = "5,6";  
$q = "DELETE FROM product_attributes 
      WHERE product_id='$mpa' 
        AND FIND_IN_SET( attribute_id, '$val_ids' )=0";
$r = mysqli_query($dbc, $q);

请参阅