我在名为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'] != "")

08-16 23:47