我在名为mileage
的MySQL数据库表中有一个字段,其类型为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的任何字符串输入,对吗?
还是我不知道前导零?
最佳答案
您收到的错误与数据库的设置无关。如果值为零,则empty为true。
以下内容被认为是空的:
“”(空字符串)
0(0为整数)
0.0(浮点数为0)
“ 0”(0作为字符串)
空值
假
array()(一个空数组)
$ var; (已声明变量,但没有值)
http://us3.php.net/empty
如果您想进行正确的检查,请尝试isset并简单地检查您的帖子==“”
例如if(isset($_POST['mileage']) && $_POST['mileage'] != "")