2014-09-05 4 views
0

У меня проблема, я хотел бы сделать обновление, если хэш-код такой же. хэшуникальный за столом. Я не могу найти правильный способ сделать это.mysql_query ON DUPLICATE KEY UPDATE

mysql_query("INSERT INTO shop_product_search3_muokattu2 
      (id, hash, product_name, type, manufacturer, mini_products) VALUES 
      (NULL, '".$hash."', '".$row['product_name']."', '".$row['type']."', '". $row['manufacturer']."', '".$row['mini_products']."') 
      ON DUPLICATE KEY 
       UPDATE mini_products += VALUES('".$mini_products."') ") 
      or die(mysql_error()); 
+0

Когда я пытаюсь добавить новый $ строки [ 'mini_products '] за предыдущими $ row [' mini_products '], когда хеш совпадает. Я не знаю, как обновить базу данных. Я просто сделал это, чтобы добавить новое, чтобы заменить старые данные, но я хочу, чтобы они добавляли их вместе. mini_products = '". $ row [' mini_products ']."' ") или die (mysql_error()); –

+0

Обязательно: если это PHP (как он выглядит), mysql_query устарел http://php.net/ manual/en/function.mysql-query.php – Jaydee

+0

Да, его PHP, я пытаюсь найти правильный путь для этого. –

ответ

1

Это ваш запрос:

INSERT INTO shop_product_search3_muokattu2(id, hash, product_name, type, manufacturer, mini_products) 
    VALUES (NULL, '".$hash."', '".$row['product_name']."', '".$row['type']."', '". $row['manufacturer']."', '".$row['mini_products']."') 
    ON DUPLICATE KEY UPDATE mini_products += VALUES('".$mini_products."' 

Я считаю, что у вас есть проблемы с on duplicate key update заявления. Аргументом для VALUES должно быть имя столбца. В качестве альтернативы вы можете поместить значение напрямую. Таким образом, любой из следующих должно работать:

ON DUPLICATE KEY UPDATE mini_products += VALUES(mini_products) 
    ON DUPLICATE KEY UPDATE mini_products += $mini_products 

Как примечание: я полагаю, что += работает, но я хотел бы написать их как:

ON DUPLICATE KEY UPDATE mini_products = coalesce(mini_products, 0) + VALUES(mini_products) 
    ON DUPLICATE KEY UPDATE mini_products = coalesce(mini_products, 0) + $mini_products 
+0

ON DUPLICATE KEY UPDATE mini_products = mini_products + '". $ row ['mini_products']. "'") или die (mysql_error()); когда я пытаюсь добавить их в базу данных, покажу только результат 0. –

+0

У вас есть уникальный индекс/ограничение на 'hash'? –

+0

Да, у меня есть это. –

Смежные вопросы