Есть много учебных пособий, но я не смог как-то заставить их работать.
Я пытаюсь обновить свою таблицу, если данные во всех, кроме как в столбце, совпадают с данными, которые я вставляю через форму. Я использую php в качестве языка сценариев и mysql на серверной части.
$name = $_POST['name'];
$phone = $_POST['phone'];
$genders = $_POST['gender'];
$hno = $_POST['hno'];
$sector = $_POST['sector'];
$city = $_POST['city'];
$state = $_POST['state'];
$pin = $_POST['pin'];
$ailt = $_POST['ailt'];
$q="INSERT INTO manage (name, phone, gender, hno, sector, city, state, pin, ailt)
VALUES ('$name', '$phone', '$genders', '$hno', '$sector','$city','$state','$pin','$ailt')
ON DUPLICATE KEY UPDATE ailt='$ailt'";
Что я пытаюсь сделать, это вставить данные, если они еще не существуют, или если все поля, кроме ailt
совпадать, обновить эту строку с новым ailt
,
Я застрял на этом пару часов. Выглядит просто, но я просто не могу заставить его работать, так как строки продолжают вставляться. Они не обновляются, даже когда я сохраняю все данные одинаковыми и задаю другое значение для ailt.
Учитывая, что комментарии залиты SQL-инъекцией, я не буду останавливаться на этом снова.
Синтаксис, который вы ищете UPDATE ailt=VALUES(ailt)
,
Смотрите абзац в документы начиная с «Вы можете использовать функцию VALUES (col_name)» для более подробной информации.
Изменить: Что касается вашего комментария о том, как строки «продолжают вставлять», это, вероятно, потому, что у вас нет ПЕРВИЧНОГО или УНИКАЛЬНОГО ключа в базе данных, который может определить, какую строку обновлять. См. Первый абзац документов, на которые я ссылался выше, для дополнительной информации.
Других решений пока нет …