2014-09-05 148 views
0

我有問題,我想做更新時散列相同。 散列獨特在桌上。我無法找到正確的方法來做到這一點。mysql_query重複密鑰更新

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']的後面。我不知道如何更新數據庫。我只是用它來添加新的來替換舊的數據,但我想讓它們加在一起。如果這是PHP(它看起來像),mysql_query已被棄用http://php.net/(')'或'die(mysql_error()); – 2014-09-05 11:13:24

+0

manual/en/function.mysql-query.php – Jaydee 2014-09-05 12:00:46

+0

是啊,它的PHP,我試圖搜索正確的方式來做到這一點 – 2014-09-05 12:09:36

回答

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']。「'」)或死(mysql_error());當我嘗試添加它們時,數據庫只顯示0的結果。 – 2014-09-05 11:18:31

+0

你對'hash'有唯一的索引/約束嗎? – 2014-09-05 11:54:24

+0

是的,我確實有。 – 2014-09-05 12:10:26