我有一个库存系统的代码。
$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”但保留了所有其他数据。
但我得到错误。我感谢所有的帮助
答案 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
值。未包含的列不会更改。