У меня есть следующий оператор обновления, который успешно выполняется, но без изменения значения в таблице.
$name = "John Doe"; //to update into John Stack
$chenna = "Mz"; $reg = 25; $km = 3;
$dbh = PDO Object
$stmt = $dbh->prepare("UPDATE `hl_customer` SET `name`=:hming, `address`=:chenna
WHERE `regd`=:regd AND `kum`=:km");
$stmt->bindParam(':hming', $name, PDO::PARAM_STR);
$stmt->bindParam(':chenna', $hmun, PDO::PARAM_STR);
$stmt->bindParam(':regd', $reg, PDO::PARAM_INT);
$stmt->bindParam(':km', $km, PDO::PARAM_INT);
$stmt->execute();
$affected = $stmt->rowCount();
Другой проверенный код:
$stmt = $dbh->prepare("UPDATE `hl_customer` SET `name`=?, `address`=?
WHERE `regd`=? AND `kum`=?");
$stmt->execute([$name, $hmun, $reg, $km]);
$affected = $stmt->rowCount();
$stmt = $dbh->query("UPDATE `hl_customer` SET `name`='$name', `address`='$chenna'
WHERE `regd`='$reg' AND `kum`='$km'");
Для обновления я сохранилизменив переменную $name
, но не было затронутой строки.Счетчик строк всегда возвращает 0. Я проверял как в phpmyadmin (последняя версия), так и в mysql Workbench (последняя), и проблема все еще существует.Затем я снова проверил в консоли MySQL, и он работает, как ожидалось.Но почему это не работает в коде, показанном выше, phpmyadmin и workbench.В чем может быть проблема?Мой код неверен?Я использовал mysql 8.0.12, php 5.6. * И php 7.1. *.Я проверил это снова без параметризованного запроса, но он не работал.Теперь я начинаю думать, что это своего рода ошибка в php.Спасибо