我有以下更新语句,它确实成功执行但表中没有值更改。
$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中的一种bug。谢谢
好吧,我没有看到您的代码有任何问题,请尝试验证您的表中的列数是否与您拥有的参数数量相匹配,因为您说当您删除最后一个参数时它是否有效