php - MySQL 不会更新为零作为值

标签 php mysql

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

$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/

相关文章:

php - 获取表中具有特定名称的所有项目名称值

java - JSP MySQL 错误

php - 如何释放直接作为数组获取并存储在变量中的 mysql 结果?

php - 重建后文件更改未反射(reflect)在Docker镜像中

php - 无法扫描里面的类/IlluminateQueueClosure.php

javascript - 解析器错误/语法错误 : Unexpected token <

MYSQL:基数违规:1242 子查询返回超过 1 行?

mysql - SQL - 查找一列的重复项但另一列不同

php - 需要 PHP 代码来从数据库中选择大于 5 但不大于 15 的数字(意味着所有大于 5 的数字,不包括 15)?

php - 查询更新或插入