当我想要空白值时,我曾经设置过这样的东西。

$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/

10-14 14:41
查看更多