#mysql #sql
#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";
я пытаюсь создать, если штрих-код существует, он добавляет старый «cant» новый «cant», но сохраняет все остальные данные.
но я получаю ошибку. я ценю любую помощь
Комментарии:
1. Ваша
ON DUPLICATE KEY
строка находится за пределами строки.
Ответ №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()
s для обработки NULL
значений. Столбцы, не включенные, не изменятся.