我有以下更新语句,该语句可以成功执行,但表中的值没有变化。
$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中的一种错误。
谢谢
答案 0 :(得分:0)
好吧,我没有看到您的代码有什么问题,请尝试验证表中的列数是否与您拥有的参数数匹配,因为您说在删除最后一个参数时它就起作用了