|
|
|
| Всем доброго времени суток. Есть скрипт, который пробегает по xml файлу и заносит данные в БД. Вопрос возможно ли в данном случае объединить запрос в Select Update и Select Insert? И вообще имеет ли это смысл?
$yml = simplexml_load_file($url);
mb_internal_encoding("UTF-8");
foreach ($yml->shop->offers->offer as $item) {
$name = $item->name;
$price = $item->price;
$ed = $item->ed;
$num = $item->num;
$country = $item->country;
$sql = "SELECT id FROM `sklad` WHERE `name`='".mysql_real_escape_string($name)."' and `id_company`='".mysql_real_escape_string($company)."' LIMIT 1";
$sql = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($sql) > 0) {
$row = mysql_fetch_assoc($sql);
$update = mysql_query ("UPDATE `sklad` SET price='".mysql_real_escape_string($price)."' WHERE id='$row[id]'");
}
else {
$insert = mysql_query ("INSERT INTO `sklad` (name, price, ed, num, country, id_company) VALUES ('$name','$price','$ed','$num','$country','$company')");
}
}
|
| |
|
|
|
|
|
|
|
для: kapitalist
(08.12.2014 в 17:47)
| | Есть объединенная форма
INSERT .... ON DUPLICATE KEY UPDATE ...
|
Позволяет одним запросом добавлять / заменять сразу ряд строк | |
|
|
|
|
|
|
|
для: Trianon
(08.12.2014 в 21:16)
| | хотел проверить будет ли работать
INSERT ...SELECT .... ON DUPLICATE KEY UPDATE ... | |
|
|
|
|
|
|
|
для: Valick
(08.12.2014 в 21:18)
| | вроде как это компоненты не связанные одна с другой - почему бы и нет?
Правда в данном случае SELECT как-то без пользы. | |
|
|
|
|
|
|
|
для: Trianon
(08.12.2014 в 21:21)
| | kapitalist, просил селект, правда в общую картину я не вникал | |
|
|
|
|
|
|
|
для: Valick
(08.12.2014 в 21:26)
| | не просил он селект.
У него есть внешний (из XML) набор строк, которые он хочет загнать в таблицу (либо новыми, если в таблице еще нет ключей, либо обновить определенные поля в старых строках - если уже есть) .
Кроме как чтоб определиться, есть уже ключ, или нет - SELECT ему не нужен.
В чистом виде INSERT ... ON DUPLICATE KEY UPDATE
Вот, даже пример нашел старый. | |
|
|
|
|
|
|
|
для: Trianon
(08.12.2014 в 21:35)
| | ну не знаю, я вижу запросы в цикле, мой моск подсознательно пытается от них избавится | |
|
|
|
|
|
|
|
для: Trianon
(08.12.2014 в 21:16)
| | Всем спасибо, не ожидал такого живого обсуждения )))
Вот вы говорите избавиться от запросов в цикле. А это как?! Так или иначе мне нужно проверить наличие строки в БД.
INSERT ... ON DUPLICATE KEY UPDATE - судя по всему хороший вариант... К сожалению не умею им пользоваться, но буду учиться. | |
|
|
|