2009-11-07 88 views
22

在DB中,我有一个名为'fk_ownerID'的字段的表。默认情况下,当我添加一个新的表格行时,'fk_ownerID'是空的。在Toad for MySQL中,这显示为{null}。如果'fk_ownerID'被赋予了一个值,我稍后删除这个值,我设置了fk_ownerID =“”。如何检查mysql是否返回空/空

现在,我有以下代码:

$result = $dal->getRowByValue('tableName','id', $_POST['myID']); 

// Check to see if any rows where returned 
if (mysql_num_rows($result) > 0) 
{ 
    while ($row = mysql_fetch_array($result)) 
    { 
    $ownerID = $row["fk_ownerID"];  
    } 
} 

现在变量$ OWNERID应该有一个数字,还是不行。但我不确定如何检查。目前我正在这样做:

if ((strlen($ownerID) == 0) || ($ownerID == '0') || ($ownerID == 'null')) 

但我敢肯定只有其中一个测试应该是必要的。

什么是检查行字段是空还是空的最佳方法?

回答

35

使用空()和/或is_null()

http://www.php.net/emptyhttp://www.php.net/is_null

空独自将达到目前的使用情况,is_null如果你想区分一个空的字段和一个空的字段,就可以使更多的控制成为可能。

+1

所以我必须使用空()和is_null()? – Steven 2009-11-07 15:46:37

+0

ok .... empty()should do :) - >如果var有非空和非零值,则返回FALSE。 以下东西被认为是空的: “”(空字符串) 0(0作为整数) “0”(0作为字符串) NULL FALSE 阵列()(空数组) var $ var; (一个声明的变量,但没有在类中的值) – Steven 2009-11-07 16:00:41

+3

我认为'is_null()'更安全,因为如果一个变量有一个零值,它仍然被认为是'empty()'。 – Mateng 2013-04-02 15:32:45

6

您可以使用is_null()函数。

http://php.net/manual/en/function.is-null.php:在注释:

mdufour在Gmail的点com 8月20日,2008年04:31 测试通过MySQL查询返回NULL字段/列。

假设您希望检查当mySQL查询返回的> null时,表“bar”的给定行中的字段/列“foo”是否为空。 你只需要使用“is_null()”函数:

[connect…] 
$qResult=mysql_query("Select foo from bar;"); 
while ($qValues=mysql_fetch_assoc($qResult)) 
    if (is_null($qValues["foo"])) 
     echo "No foo data!"; 
    else 
     echo "Foo data=".$qValues["foo"]; 
[…] 
1

此外,不要忘记===运算符,当您使用的数字可能表示null或0或返回某种形式的false或null,而不是您要查找的内容。

+2

这不回答问题。 – cybermonkey 2014-11-16 18:23:50

+1

我同意,应该留作评论。 – Citizen 2017-04-29 20:17:53

1
select FOUND_ROWS(); 

将返回no。通过选择查询选择的记录。

-4

假设

$row=mysql_fetch_row($rc) 
and if you want to check if row[8] is null then do 
$field=$row[8]; 
    if($field) 
echo ""; 
else 
echo "";