在重复键上只更新一个字符串

时间:2014-07-01 00:41:48

标签: mysql sql

我有一个库存系统的代码。

$barc = mysqli_real_escape_string($con, $_POST['barc']);
$cant = mysqli_real_escape_string($con, $_POST['cant']);
$com = mysqli_real_escape_string($con, $_POST['com']);

$sql="INSERT INTO inventario (barc, cant, com)
VALUES ('$barc', '$cant', '$com')"
ON DUPLICATE KEY UPDATE barc=barc,cant=cant + $cant,com=com;

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";

我试图让if BARC存在,它增加了旧的“cant”+ new“cant”但保留了所有其他数据。

但我得到错误。我感谢所有的帮助

1 个答案:

答案 0 :(得分:1)

您正在寻找的语法是:

INSERT INTO inventario (barc, cant, com)
    VALUES ('$barc', '$cant', '$com')"
    ON DUPLICATE KEY UPDATE cant = concat(coalesce(cant, ''), coalesce($cant, ''));

除了将整个SQL语句放在一个字符串中之外,MySQL中的连接函数是concat()。我添加了coalesce()来处理NULL值。未包含的列不会更改。