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