我查询数据库并将结果保存到数组中。我想从数据库中删除与所述数组中的结果匹配的行。我还必须删除一些表,这些表也与存储在数组中的值具有相同的名称。这就是我首先执行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语句以实现我的目标?
非常感谢答案 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手动检查表值并修复数据/找到错误。