@fgjcirifb

Как узнать, каких элементов массива еще нет в БД?

Допустим есть массив

$array = [[
  'id' => 1,
  'name' => 'BlaBla',
],
[
  'id' => 2,
  'name' => 'BloBlo',
],
[
  'id' => 3,
  'name' => 'BlyaBlya'
]];

И таблица БД:

id | name

И мне нужно узнать, каких name еще нет в БД, и узнать номер элемента которого еще нет. Я предлагаю просто пройтись foreach'ем по массиву, и в каждой итерации проверять с помощью WHERE есть он или нет. Но а если элементов будут сотни, тысячи? Тогда будет 1000 запросов. Как решить такую проблему?
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
... where name in ( 'BlaBla', 'BloBlo', 'BlyaBlya')


или вообще не проверять наличие, а делать insert ... on duplicate key ignore (или update)
Ответ написан
wagoodoogoo
@wagoodoogoo
prestashop, webix, phalcon, vue, slim, craft cms
если вам несуществующие элементы нужно добавить или обновить в таблице, то делайте перебор массива
и mysql запросы INSERT IGNORE или INSERT ... ON DUPLICATE KEY UPDATE
первый вставит все несуществующие записи и проигнорирует существующие
второй вставит несуществующие и обновит существующие
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы