当我想要空白值时,我常常设置这样的东西.
$blankVar = '';
Run Code Online (Sandbox Code Playgroud)
几个月后,我认为这看起来更好,意图更清晰.
$blankVar = null;
Run Code Online (Sandbox Code Playgroud)
这种情况暂时没有打嗝,但最近有一个PDO准备好的陈述我遇到了一个问题.将值绑定为null会导致查询失败,而将其绑定到''则不会.我需要将它绑定为null,以便在满足条件时,它将插入空白数据.
2之间有什么区别?我仍然认为等于null(或至少是常数)看起来更好,所以我应该这样做吗?
define('EMPTY', '');
Run Code Online (Sandbox Code Playgroud)
gah*_*ooa 47
Null只是PHP中的另一种数据类型,它只有一个值(null). 由于PHP是一种松散类型的语言,因此它可能会混淆如何处理不同的值.
"", 0, "0", False, array(), Null 在PHP中都被认为是假的.
然而,Null是一种不同的动物.使用Null 的主要不兼容性是你无法判断它是否是set().
$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
Run Code Online (Sandbox Code Playgroud)
所以null是奇怪的,因为它不遵循PHP中的正常变量规则(至少有一些).在大多数情况下,它很好.
说到数据库列,PHP的NULL没有位置. 你看,SQL是一种基于字符串的语言.SQL的NULL必须NULL用没有引号表示.
因此,如果您想要一个EMPTY字段,请将其设置为""
INSERT INTO foo SET bar = ""
Run Code Online (Sandbox Code Playgroud)
但是如果您想要一个NULL字段,请将其设置为NULL
INSERT INTO foo SET bar = NULL
Run Code Online (Sandbox Code Playgroud)
很大的区别.
但是,如果您尝试直接插入PHP NULL,它将向查询添加零个字符(这会留下空白或语法错误,具体取决于您是否引用它).
Rex*_*x M 21
null是编程语言中的一个特殊占位符值,字面意思是"无".它不是0,它不是空字符串,它什么都没有.指向的内存没有任何价值.另一方面,空字符串仍然是一个字符串对象,只是一个很短的字符串:)
| 归档时间: |
|
| 查看次数: |
17695 次 |
| 最近记录: |