我有一个清单系统的以下代码。

$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";


我试图使如果BARC存在,它将添加旧的“ cant” +新的“ cant”,但保留所有其他数据。

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

最佳答案

您要查找的语法是:

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值。未包括的列将保持不变。

09-16 10:51