我有一个清单系统的以下代码。
$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
值。未包括的列将保持不变。