|
|
|
| Здравствуйте, столкнулся с такой проблемой, написал php код на добавление прайс листов
$a = array();
foreach($_POST['file'] as $k => $v){
$a[] = "SELECT '".intval($k)."' id, '".$v."' name_file";
}
$a = implode(' UNION ALL ', $a);
$sql = "INSERT INTO grn_price (".$a.") ;";
db_query($sql);
|
На который передается POST запрос с формы в таком формате
file[1]=price_1.xls&file[2]=price_2.xls......
|
но проблема вот в чем, как так сделать что бы одним запросом к базе данных или добавить прайс лист или обновить ячейку если имеются совпадения.
Совпадения можно искать как по id так и в названии. | |
|
|
|
|
|
|
|
для: SaIdEr
(29.05.2013 в 16:35)
| | Что, никаких предложений нет? | |
|
|
|
|
|
|
|
для: SaIdEr
(29.05.2013 в 16:35)
| | > как так сделать что бы одним запросом к базе данных или добавить прайс лист или
> обновить ячейку если имеются совпадения.
можно воспользоваться конструкцией ON DUPLICATE KEY UPDATE.
Так как из вашего сообщения ничего не понятно о структуре таблицы и вставляемых данных, приведу пример использования из своего проекта, а вы уж сами адаптируйте под свои нужды:
INSERT INTO `spec`( `product_id`, `box_spec_id`, `spec_co` )
VALUES( 459, 177, 1 ),
( 460, 178, 2 )
ON DUPLICATE KEY UPDATE `spec_co` = `spec_co`+VALUES(`spec_co`)
|
> Совпадения можно искать как по id так и в названии.
Как можно понять из контекста конструкции, перед вставкой проверяется наличие в таблице записей с первичным ключом или уникальным ключом имеющимися во вставляемых данных.
Следовательно, если вы хотите проверять не только по id, то на название нужно дабавить UNIQUE KEY | |
|
|
|
|
|
|
|
для: Sfinks
(30.05.2013 в 09:25)
| | Пробовал я пользоваться ON DUPLICATE KEY UPDATE только почему то я страницу открываю на сервере и в базу заношу три строки.
Обновляю страницу - все строки заносятся повторно.
И сколько раз я ее обновляю, столько раз и дублируются все три записи!
Сравниваю по уникальному id | |
|
|
|
|
|
|
|
для: SaIdEr
(30.05.2013 в 10:17)
| | Все, разобрался, в таблице на id надо было повесить AUTO_INCREMENT и установить первичный ключ | |
|
|
|