当我想要空白值时,我曾经设置过这样的东西。
$blankVar = '';
然后几个月后,我决定看起来更好,意图也更清晰。
$blankVar = null;
这段时间没有打h,但最近在PDO准备的声明中,我遇到了一个问题。将值绑定(bind)为null会使查询失败,而将其绑定(bind)到”则不会。我需要将其绑定(bind)为null,以便如果满足条件,它将插入空白数据。
两者之间有什么区别?我仍然认为等于null(或至少一个常数)看起来更好,那么我应该这样做吗?
define('EMPTY', '');
最佳答案
空是PHP中的另一种数据类型,只有一个值(空)。 由于PHP是一种松散类型的语言,因此它可能会混淆如何处理不同的值。"", 0, "0", False, array(), Null
在PHP中都被认为是False。
但是,Null是另一种动物。与Null的主要不兼容之处在于您无法确定它是否为isset()。
$x = false;
isset($x) -> true
echo $x -> ""
$y = null;
isset($y) -> false
echo $y -> ""
//$z is not set
isset($z) -> false
echo $z -> E_NOTICE
因此,null从某种意义上讲是奇怪的,因为它不遵循PHP中的正常变量规则(至少有些规则)。在大多数情况下,这很好。
涉及数据库列时,PHP的NULL在那里没有位置。 您会看到,SQL是基于字符串的语言。 SQL的NULL必须由不带引号的
NULL
表示。因此,如果您需要一个EMPTY字段,请将其设置为“”
INSERT INTO foo SET bar = ""
但是,如果要使用NULL字段,请将其设置为NULL
INSERT INTO foo SET bar = NULL
很大的区别。
但是,如果您尝试直接插入PHP NULL,它将在查询中添加零个字符(根据引号的不同,这会导致空白或语法错误)。
关于php - 在PHP中,NULL和将字符串设置为等于2个单引号的区别是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/624922/