Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 瓦尔查尔(32)元';我不接受零_Php_Mysql_Sql - Fatal编程技术网

Php 瓦尔查尔(32)元';我不接受零

Php 瓦尔查尔(32)元';我不接受零,php,mysql,sql,Php,Mysql,Sql,我在MySQL数据库表中有一个名为miliety的字段,它的类型是varchar(32) 在我的网页上,我有一个输入字段,用户可以在其中键入里程数并发送表单 以下是里程输入的一些PHP验证: if (empty($_POST["mileage"])) { $mileageErr = "Mileage required"; } else{ $mileage = htmlspecialchars($_POST["mileage"]); } 将里

我在MySQL数据库表中有一个名为
miliety
的字段,它的类型是
varchar(32)

在我的网页上,我有一个输入字段,用户可以在其中键入里程数并发送表单

以下是里程输入的一些PHP验证:

if (empty($_POST["mileage"])) {
        $mileageErr = "Mileage required";
    }   
    else{
    $mileage = htmlspecialchars($_POST["mileage"]);
    }
将里程插入db表时:

// validation omitted...

$query = $db->prepare("INSERT INTO cars VALUES ($mileage)");
$result = $query->execute();
当我在输入字段中输入数字
0
并提交它时,我得到错误
“所需里程数”

为什么我会犯这个错误?我已经将类型设置为varchar(32),它应该接受长度不超过32的任何字符串输入,对吗


或者我对前导零有什么不知道的吗?

您得到的错误与数据库的设置方式无关。如果值为零时,则为空

以下内容被认为是空的:

“”(空字符串)
0(0为整数)
0.0(0作为浮点数)
“0”(0作为字符串) 空
假的 array()(空数组)
$var;(声明了一个变量,但没有值)

如果您想进行正确的检查,请尝试isset并简单地检查您的帖子是否=“” 比如说


if(设置($\u POST['miliety'])和&$\u POST['miliety']!=”)

您遇到的错误与数据库的设置方式无关。如果值为零时,则为空

以下内容被认为是空的:

“”(空字符串)
0(0为整数)
0.0(0作为浮点数)
“0”(0作为字符串) 空
假的 array()(空数组)
$var;(声明了一个变量,但没有值)

如果您想进行正确的检查,请尝试isset并简单地检查您的帖子是否=“” 比如说


if(isset($\u POST['miliege'])和&$\u POST['miliege']!=”)
$\u POST[“miliege”]
将评估为FALSE,因为它为零(有关详细信息,请参阅)。如果某个变量不存在或计算结果为FALSE,则该变量被视为空。

$\u POST[“里程数”]
将计算结果为FALSE,因为它为零(有关详细信息,请参阅)。如果变量不存在或计算结果为FALSE,则该变量被视为空。

您希望使用isset()检查里程是否存在,而不是空()。

您希望使用isset()检查里程是否存在,而不是空()。

不相关,但在插入字符串(varchar(32),您需要引用它们,尽管您确实应该使用绑定变量,而不是直接注入,以避免sql注入。这就是为什么您首先要准备查询。不相关,但是当您插入字符串(varchar(32)…)时,您需要引用它们,尽管您确实应该使用绑定变量,而不是直接注入变量,以避免sql注入。这就是您首先准备查询的原因。是的,像
if(empty($\u POST[“miliety”])和&if($\u POST[“miliety”])!=0这样的快速修复方法也可以执行此任务。
不,empty将返回false,因为您的值为零。使用我发布的代码,如果里程数仅为数字,您可以更进一步,并检查是否为数字。如果您不希望值为零,则空将适用于您。但是如果你这样做了,那么就使用我在答案中发布的代码。对,像
if(empty($\u POST[“miliety”])和&if($\u POST[“miliety”])!=0这样的快速修复方法也可以这样做吗?
不,empty将返回false,因为你的值为零。使用我发布的代码,如果里程数仅为数字,您可以更进一步,并检查是否为数字。如果您不希望值为零,则空将适用于您。但是如果你这样做了,那么就用我在答案中贴出的代码。