使用IN条件mysqli删除多行

时间:2015-10-25 13:17:37

标签: php database mysqli

我查询数据库并将结果保存到数组中。我想从数据库中删除与所述数组中的结果匹配的行。我还必须删除一些表,这些表也与存储在数组中的值具有相同的名称。这就是我首先执行SELECT语句而不仅仅是DELETE

的原因
    ... //$returnedEventIDs is the results of a SELECT query 

// create array to save events
    $eventsArrayOfIDs = array(); 

//loop through the results and save each to the array
     while ($eventID = mysqli_fetch_assoc($returnedEventIDs)){
          $eventsArrayOfIDs[] = $eventID['EventID'];

      }

       $events = join(',',$eventsArrayOfIDs); 

       $deleteOutdatedEventsAndTables = "DELETE FROM TMVUKMeetUps WHERE EventID IN ($events)";

我希望" DELETE FROM表WHERE param IN($ events)&#34 ;;将从表中删除所有行,其中param = $ events数组中的一个元素。

相反,我得到错误

// ID9nfm9528是数组中的第一个元素

  

未知专栏' ID9nfm9528'在' where子句'

如何更新DELETE语句以实现我的目标?

非常感谢

2 个答案:

答案 0 :(得分:0)

查询可能没有带引号的单词 ID9nfm9528 ,这就是mysql假定它是字段而不是字符串的原因。请记住,您可以在where子句中使用数据库字段,该字段通常用简单的字符串(没有引号)

答案 1 :(得分:0)

首先检查数据库结构中的EventID字段。如果是char / varchar类型,则使用

更改$events = join(',',$eventsArrayOfIDs);
$sap = '';
$events='';

foreach($eventsArrayOfIDs as $id){  
    $events .=$sap."'$id'";
    $sap = ', ';    
}

如果是int类型,请通过phpmyadmin手动检查表值并修复数据/找到错误。