Вставьте новые записи, если столбец не содержит значений в массиве - PullRequest
0 голосов
/ 14 января 2019

У меня есть массив значений, по которым я зацикливаюсь, пытаюсь проверить таблицу MySQL на соответствие столбца для значения массива, а затем вставить новую запись, если совпадение не найдено.

foreach($mls_ids as $mls_id) {

$query = "INSERT INTO mdc_data (mls_id) VALUES ('$mls_id') 
WHERE NOT EXISTS ( SELECT mls_id FROM mdc_data WHERE mls_id = '$mls_id')  
LIMIT 1 ";  
$result = mysqli_query($mysqli, $query) or trigger_error("Query Failed! 
SQL: $query - Error: ". mysqli_error($mysqli), E_USER_ERROR);   
}

Записи не вставлены в таблицу. (таблица пуста)

Произошла ошибка: у вас ошибка в синтаксисе SQL; проверить руководство что соответствует вашей версии сервера MySQL для правильного синтаксиса использовать рядом с «ГДЕ НЕ СУЩЕСТВУЕТ» (ВЫБЕРИТЕ mls_id ОТ mdc_data ГДЕ mls_id = '2189665') LIMIT

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Рабочий код.

Добавлен уникальный индекс для mls_id col (@Dimi).

Используемый пример, предоставленный @Funk Forty Niner для остальных.

$query = "INSERT INTO mdc_data (mls_id) 
SELECT '$mls_id' FROM DUAL
WHERE NOT EXISTS (SELECT mls_id FROM mdc_data 
      WHERE mls_id='$mls_id') 
LIMIT 1"; 

Лучшее понимание использования Dual сейчас.

Спасибо за помощь!

0 голосов
/ 14 января 2019
INSERT INTO mdc_data (mls_id)
SELECT * FROM (SELECT '$mls_id') AS tmp
WHERE NOT EXISTS (
    SELECT mls_id FROM mdc_data WHERE id = '$mls_id'
) LIMIT 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...