2014-09-05 138 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