2016-06-07 60 views
3

我正在使用PHP 5.5从数字postgresql数据库表字段检索数字值。它可以来自数据库为空或作为一个实际的数字,无论我将它存储在一个变量。由于我们中的一些人可能会或可能不知道null * 1 = 0,这是我喜欢做的事情,但是我担心这是否是错误的,或者是否将可能的空值转换为零是不好的做法实际上必须检查价值。请看下图:

... $fieldVal *= 1; //assume at this point this holds value returned by DB ...

因此,如果DB返回null然后$ fieldVal将变成零和任何非空值将保持不变。非常感谢您的见解。

+0

你可以像'(int)$ fieldVal'一样使用类型转换。 – TheDrot

+0

我会在这种情况下使用'is_null'函数,但我不确定使用此脚本的上下文,您可以添加更多的上下文吗?你用什么函数来获取字段值? –

+1

@TomásCot不知道postgres上是否存在'is_null'函数,最好使用ansi函数'COALESCE' –

回答

5

更改您的查询,包括COALESCE和解决空的情况下

SELECT fieldNane 

SELECT COALESCE(fieldName, 0) 

BTW:是的是不好的做法,引进这些类型的黑客。

1

这真的取决于你与谁谈论你的方法检查null与整数是否是不好的做法。在软件开发中,有上千种方法来执行单个任务,所以这确实是一个意见问题。

我个人会称之为不好的做法,只是因为PHP提供了工具来检查变量是否包含null或包含整数类型。其中的一些工具,像

is_int()

is_null()

功能,虽然这些功能也有自己的缺点在几个方面,我的观点是,如果语言有工具来执行一些你觉得你一起“黑客”的东西,使用该语言提供的工具。

相关问题