我应该在PHP中检查变量是否为NULL吗?

我应该在PHP中检查变量是否为NULL吗?,php,mysql,null,Php,Mysql,Null,我有这样一个问题: INSERT INTO table(type) values($type); 我从get方法的参数中获取$type。像这样: $type = $_GET['type']; 如您所知,如果$\u GET['type']不可用,则该查询将设置NULL,而不是$type 现在我想知道,我应该这样检查吗 $type = isset($_GET['type']) ? $_GET['type'] : null; 或者该条件是无用的?如果接受空值,并且可以安全地使用它创建条目,则无

我有这样一个问题:

INSERT INTO table(type) values($type);
我从get方法的参数中获取
$type
。像这样:

$type = $_GET['type'];
如您所知,如果
$\u GET['type']
不可用,则该查询将设置
NULL
,而不是
$type


现在我想知道,我应该这样检查吗

$type = isset($_GET['type']) ? $_GET['type'] : null;

或者该条件是无用的?

如果接受空值,并且可以安全地使用它创建条目,则无需检查空值

显然,如果程序中的其他地方不接受null,则需要验证它并将字段设置为不接受它。在本例中,我将像您一样进行验证,并且仅当数据库接受该值时才继续数据库条目

if(!empty($_GET['type'])) 
{ $type = $_GET['type'] 
}

这将解决您的问题:)。

在进入SQL查询之前,您始终需要检查变量是否存在或有效

if ( ! isset($_GET['type'])) {
   die('no value given');
}

$secured_type = mysqli_escape_string($_GET['type']); // SQL Injection secure

INSERT INTO table(type) values($secured_type);


你从
$\u get['type']
中得到了什么?它是整数还是字符串?取决于您希望/需要如何存储该值。NULL本身是一个非零的值。此外,您还可以将数据库表中的默认值设置为NULL。@我从URL中获得该值,它是一个整数,如果设置为isset且不为空,则可以用
替换三元数,如果设置为isset且不为空,则也可以用
替换三元数。
;只有你知道;-)记住要使用准备好的语句,但是如果使用的是准备好的语句,那么.PHP null只会变成SQL null。插入到字符串中的php null,例如
$foo=null;echo“空值是->$foo如果你使用PDO你会更好-它比MySQLII更好-不使用
die
命令,OP可以使用try-and-catch作为异常。
If(!isset($\u-GET['type']){抛出新异常('没有给定值');
<?php
   $type = '';
 if(!empty($_GET['type'])) 
    { 
          $type = $_GET['type'] 
    }
?>