Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL不会以零作为值进行更新_Php_Mysql - Fatal编程技术网

Php MySQL不会以零作为值进行更新

Php MySQL不会以零作为值进行更新,php,mysql,Php,Mysql,用户检索他们的产品列表,我在一个带有预先填充数量的文本框的页面上显示该列表。用户可以更改这些数量,然后表单将这些数据发送到更新页面。我正在使用以下语句执行数据库更新 $sql = "UPDATE reservations SET quantity=? WHERE tableID= ?"; 这对于任何值都非常有效,除非用户在文本框中输入零,然后更新只跳过该值并将其保留为现有值。我已经直接进入数据库,可以手动将值更改为零,没有问题,但似乎是基于web的语句不起作用。它被设置为INT,我也尝试了V

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

$sql  = "UPDATE reservations SET quantity=? WHERE tableID= ?";
这对于任何值都非常有效,除非用户在文本框中输入零,然后更新只跳过该值并将其保留为现有值。我已经直接进入数据库,可以手动将值更改为零,没有问题,但似乎是基于web的语句不起作用。它被设置为INT,我也尝试了VARCHAR,但两者都没有成功。知道什么会导致sql语句忽略零值吗

完整的更新代码是

$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语句将跳过您的execute命令


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

问题就在这里:

if ($quantity) $stmt->execute(array($quantity, $id));
0的计算结果为false,因此如果$quantity为零,则此if语句将跳过您的execute命令


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

请说明如何将参数插入此查询。是否对值使用反勾号或引号?如果它是一个整数,则不必。同时给出表的架构,即desc reservationsSQL不应忽略零值。问题可能出在代码的其他部分。您是否尝试过在像quantity='0'这样的值上加单引号?请说明如何将参数插入到此查询中。是否对值使用反勾号或引号?如果它是一个整数,则不必。同时给出表的架构,即desc reservationsSQL不应忽略零值。问题可能出在代码的其他部分。您是否尝试过在像quantity='0'这样的值上加单引号?$quantity可能是一个字符串,因此检查===0。他甚至可以做if is numeric$quantity$quantity可能是一个字符串,因此检查===0。他甚至可以做if is numeric$quantity