我应该在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']
}
?>