MySQL不会以零作为值更新

use*_*177 1 php mysql

用户检索他们的产品列表,并在一个页面上显示此列表,其中文本框预先填充了数量.用户可以更改这些数量,然后表单将此数据发送到更新页面.我使用以下语句来执行数据库更新..

$sql  = "UPDATE reservations SET quantity=? WHERE tableID= ?";
Run Code Online (Sandbox Code Playgroud)

这适用于任何值,除非用户在文本框中放置零,然后更新只是跳过此值并将其保留在现有值.我已经直接进入数据库并且可以手动将值更改为零而没有任何问题,但它似乎只是基于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));
}
Run Code Online (Sandbox Code Playgroud)

use*_*143 6

问题就在这里:

if ($quantity) $stmt->execute(array($quantity, $id));
Run Code Online (Sandbox Code Playgroud)

0计算结果为false,因此如果$quantity为零,则此if语句将跳过执行命令.

我不知道为什么你有这个if语句开头,但也许你应该用条件替换$quantity || $quantity==="0".