我在MySQL数据库表中有一个名为mileage
的字段,其类型为varchar(32)
在我的网页上,我有一个输入字段,用户可以输入里程并发送表格
以下是里程输入的一些PHP验证:
if (empty($_POST["mileage"])) {
$mileageErr = "Mileage required";
}
else{
$mileage = htmlspecialchars($_POST["mileage"]);
}
当我将里程数插入数据库表时:
// validation omitted...
$query = $db->prepare("INSERT INTO cars VALUES ($mileage)");
$result = $query->execute();
当我在输入字段中输入数字0
并提交时,我收到错误"Mileage required"
。
为什么我收到此错误?我已将类型设置为varchar(32),它应该接受任何长度为32的字符串输入吗?
或者有什么东西我不知道如何领导零?
答案 0 :(得分:4)
您获得的错误与数据库的设置方式无关。如果您的值为零,则为空。
以下内容被认为是空的:
“”(空字符串)
0(0为整数)
0.0(0作为浮点数)
“0”(0作为字符串) NULL
假 array()(一个空数组)
是$ var; (声明的变量,但没有值)
http://us3.php.net/empty
如果您想进行正确的检查,请尝试使用isset,然后检查您的帖子是否==“” 所以例如
if(isset($_POST['mileage']) && $_POST['mileage'] != "")
答案 1 :(得分:0)
$_POST["mileage"]
将评估为FALSE,因为它为零(有关详细信息,请参阅http://uk3.php.net/empty)。如果变量不存在或者计算结果为FALSE,则该变量被视为空。
答案 2 :(得分:0)
您想检查里程是否存在isset(http://us2.php.net/manual/en/function.isset.php),而不是空(http://us1.php.net/empty)。