用户检索他们的产品列表,我将此列表显示在一个页面上,其中包含一个预填充数量的文本框。用户可以更改这些数量,然后表单将此数据发送到更新页面。我正在使用以下语句来执行数据库更新..
$sql = "UPDATE reservations SET quantity=? WHERE tableID= ?";
这适用于任何值,除非用户在文本框中输入零,然后更新只是跳过该值并将其保留在现有值。我直接进入数据库,可以手动将值更改为零,没有问题,但它似乎是基于 web 的语句不起作用。它被设置为 INT,我也尝试过 VARCHAR,但都没有运气。知道什么会导致 sql 语句忽略零 (0) 值吗?
完整的更新代码是
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$conn = new PDO($dsn, $username, $password, $opt);
$sql = "UPDATE reservations SET quantity=? WHERE tableID= ?";
$stmt = $conn->prepare($sql);
foreach($_POST["Quantity"] as $id => $quantity) {
if ($quantity) $stmt->execute(array($quantity, $id));
}
最佳答案
问题就在这里:
if ($quantity) $stmt->execute(array($quantity, $id));
0 的计算结果为 false,因此如果 $quantity
为零,此 if 语句将跳过您的执行命令。
我不知道你为什么要以这个 if 语句开头,但也许你应该用 $quantity || 替换条件$数量==="0"
。
关于php - MySQL 不会更新为零作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18540366/