Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何检查使用诸如max、count e.t.c.等sql函数的查询是否返回NULL?_Mysql_Sql_Null_Max - Fatal编程技术网

Mysql 如何检查使用诸如max、count e.t.c.等sql函数的查询是否返回NULL?

Mysql 如何检查使用诸如max、count e.t.c.等sql函数的查询是否返回NULL?,mysql,sql,null,max,Mysql,Sql,Null,Max,如何检查使用诸如max()之类的sql函数的查询是否返回NULL? 这是我的密码: $query = mysql_query("SELECT MAX(priority) FROM categories") or die('sel_pri:'.mysql_error()); if(mysql_num_rows($query) > 0) $max_pri = mysql_result($query, 0) or die('priority:'.mysql_er

如何检查使用诸如max()之类的sql函数的查询是否返回NULL? 这是我的密码:

$query = mysql_query("SELECT MAX(priority) FROM categories") or die('sel_pri:'.mysql_error());

    if(mysql_num_rows($query) > 0)
            $max_pri = mysql_result($query, 0) or die('priority:'.mysql_error());
    else
        $max_pri = 0;

我的categories表是epmty,因此
mysql\u num\u rows()
将返回1,因为此查询将返回1行空值。上面的代码“死了”! 我也尝试过:

if(empty($query))   
if(isset($query))
if(is_null($query))

但是以上这些都不起作用。

我遇到了类似的问题,我用以下方法解决了它

if(mysql_num_rows($query)>0) {

如果(!empty($query)) {


}

在您的例子中,您还可以使用
coalesce
在SQL中提供默认值,它返回其参数的第一个非空值:

SELECT COALESCE(MAX(priority), 0) FROM categories

我更喜欢IFNULL函数,它听起来更相关

SELECT IFNULL(MAX(priority),0) FROM categories

在我的例子中,你的意思是:
$resultSet=mysql\u result($query,0);
$resultSet=$query
?因为第一个也会死,第二个也不会活……好吧,在几次测试之后,我发现我所需要的是
如果($query->num\u rows)>0){//mysql\u result($query)}
该值似乎是空的,它返回0,尽管行是1。
!empty($query)
始终不是空的。Thank我使用表中的行再次运行它,如果($query->num_rows)>0)始终是0(false)。实际上,
$max_pri
是0,表中的所有字段优先级都是值1(我的默认值),知道为什么吗?可能是你在写false(0),默认值为true(1)…将$max_pri更改为任何其他数字,如2或3..这应该可以解决你的问题。不,还是一样,我将表中优先级字段的默认值更改为2,但仍然不起作用。
if($query->num_rows)>0)
始终为false,
if(mysql\u num\u rows($query)>0)
始终为>0,
if(!empty($query))
始终不为空(因为$query是资源)…它们不再被维护。请参阅?改为了解,并使用或-将帮助您决定使用哪一个。谢谢!!
coalese
如果表为空,则返回0,但
mysql\u result()
仍然无效。我尝试使用了替代的mysql\u fetch\u数组($query)这是我的代码:
$query=mysql\u query(“从父类id=0的类别中选择COALESCE(MAX(priority),0)作为MAX”)或die('sel\u pri:'.mysql\u error());$result=mysql\u fetch\u数组($query);$MAX\u pri=$result['MAX'];
@ioaniatr
$MAX\u pri=mysql\u result]的原因是什么($query,0)或die(…)
dies表示0和“”等于
FALSE
,因此当返回这两个值时,
后面的语句也将被执行。
SELECT IFNULL(MAX(priority),0) FROM categories