2015-10-25 6 views
0

Я запрашиваю базу данных и сохраняю результаты в массиве. Я хочу удалить строки из базы данных, которые соответствуют результатам в указанном массиве. Я также должен удалить несколько таблиц, которые также имеют одинаковое имя, как значения, хранящиеся в массиве. Вот почему я делаю ЗЕЬЕСТ первый и не только DELETEУДАЛИТЬ несколько строк, используя условие IN mysqli

... //$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 пары IN ($ события)»; удалит все строки из таблицы, где param = один из элементов массива $ events.

вместо я получаю ошибку

// ID9nfm9528 является первым элементом в массиве

Неизвестный столбец 'ID9nfm9528' в 'где предложение'

Как я могу обновить УДАЛИТЬ для достижения моих целей?

большое спасибо

+0

var_dump $ deleteOutdatedEventsAndTables вы должны найти свою ошибку для удаления – Atiqur

+0

, которая дает строку (55) "УДАЛИТЬ ОТ TMVUKMeetUps WHERE EventID IN (ID9nfm9528);" – RyanTCB

+0

сначала проверьте структуру базы данных для столбца EventID. если это поле char/varchar, вам нужно изменить эту строку $ events = join (',', $ eventsArrayOfID); to: $ sap = ''; $ events = ''; foreach ($ eventsArrayOfIDs as $ id) {\t \t $ events. = $ Sap. "'$ Id'"; \t $ sap = ','; \t } – Atiqur

ответ

0

сначала проверьте структуру базы данных для поля EventID. если символ типа/VARCHAR затем изменить $events = join(',',$eventsArrayOfIDs); с

$sap = ''; 
$events=''; 

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

если это тип INT, пожалуйста, проверьте таблицы значений в ручную с помощью PHPMyAdmin и исправить данные/найти ошибку.

0

Запрос, вероятно, имеет слово ID9nfm9528 без кавычек, поэтому MySQL предполагает, что это поле вместо строки. Помните, что вы можете использовать поля базы данных в своем предложении where, и поле обычно записывается как простые строки (wihtout quotes).

+0

Когда я var_dump, массив говорит, что это строка. array (1) {[0] => string (10) "ID9nfm9528"} – RyanTCB

+0

Попробуйте создать запрос динамически, добавив каждый элемент массива в кавычки. –

Смежные вопросы