1

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

$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));
}
4

1 回答 1

6

问题就在这里:

if ($quantity) $stmt->execute(array($quantity, $id));

0 评估为假,因此如果为 0,此 if 语句将跳过您的执行命令$quantity

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

于 2013-08-30T19:47:18.467 回答