Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка и добавление в БД данных в цикле

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
livote
Отправлено: 05 Февраля, 2015 - 18:28:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)

[+][+]


в цикле получаются данные.примерно 100 строк с данными.каждую строку нужно сверить с базой данных, и если её нет, то добавить данные в бд.
Правильно я понимаю: нужно в каждую итерацию цикла делать 2 запроса в бд? или есть более простой способ?


-----
Не следует бояться зайти за пределы того, что считается возможным – ибо именно там находится успех.
 
 Top
Мелкий Супермодератор
Отправлено: 05 Февраля, 2015 - 18:49:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Используйте подход с пакетной обработкой.
Например, предварительно вычитать имеющиеся в таблице значения и затем сравнивать локально.
Или записывать во временную таблицу, затем одним запросом переписать строки.
Возможно, хватит банального insert on duplicate key update или insert ignore


-----
PostgreSQL DBA
 
 Top
livote
Отправлено: 05 Февраля, 2015 - 19:13:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)

[+][+]


Мелкий пишет:
Используйте подход с пакетной обработкой.
Например, предварительно вычитать имеющиеся в таблице значения и затем сравнивать локально.
Или записывать во временную таблицу, затем одним запросом переписать строки.
Возможно, хватит банального insert on duplicate key update или insert ignore


заместо "INSERT INTO..." прописать "INSERT IGNORE INTO..." и совпадений не будет?
и как я понимаю для поля нужно будет прописать "UNIQUE"?


-----
Не следует бояться зайти за пределы того, что считается возможным – ибо именно там находится успех.
 
 Top
Ch_chov
Отправлено: 05 Февраля, 2015 - 20:06:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




livote пишет:
и как я понимаю для поля нужно будет прописать "UNIQUE"?

да
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB