0

我想防止空值进入 MySQL 数据库

我正在使用以下但由于某种原因它让空值通过......

if (trim($var)= '' || !isset($var)){
header("Location:page.php?er=novariablel");
}
else {
...insert into database
}

请注意,有一堆复杂的东西可以设置 var 的值,这就是为什么我想要同时拥有 the=''和 the 的原因,!isset因为两者都可能是这种情况。

我是否缺少 or 语句的某些内容,即如果两者都为真,则它的评估结果为假。或者我做错了什么?

4

6 回答 6

5

你在你的声明中缺少=你的平等比较运算符if。尝试:

if (trim($var) == '' || !isset($var)){
于 2012-05-18T02:54:29.477 回答
3

尝试:

if (!isset($var) || empty(trim($var))){

empty()是检查变量是否没有值的更好方法。请记住,以下将返回 true:

以下内容被认为是空的:

  • ""(一个空字符串)
  • 0(0 为整数)
  • 0.0(0 作为浮点数)
  • "0" (0 作为字符串)
  • 无效的
  • 错误的
  • array() (一个空数组)
  • 变量$变量;(声明的变量,但在类中没有值)
于 2012-05-18T02:52:23.813 回答
0

您还应该在您的数据库表属性中设置一个不接受 NULL 值的约束。那么您的条目将不会在数据库中进行。

于 2012-05-18T03:53:37.790 回答
0

@John 这是一个很好的建议。

empty(trim($var))

我已经编程 6 年了,在检查变量是否为空之前,我从未想过修剪变量。

于 2012-06-03T01:33:46.803 回答
0

尝试

if (strlen(trim($var)))==0
于 2012-05-18T02:56:26.933 回答
0

尝试:

$var = trim($var);
if (!empty($var)){
  //not empty
}
于 2012-05-18T02:53:25.837 回答