空白表返回mysql_num_rows($结果)= 1

问题描述:

我的查询是

$result=SELECT MAX(surveyID) as surveyID FROM `sg_count`WHERE userID=$user 

其中sg_count表中没有记录

mysql_num_rows($result)返回1

+1

添加错误文件(S)的顶部报告;:当您选择记录它会产生一个行ini_set('display_errors',1);'看看它是否产生任何东西。还有'或者(mysql_error())'去''mysql_query()'。你在查询,对吗?我看到的只是一行代码。 – 2014-09-27 05:29:37

+0

不客气。你有没有发现问题? – 2014-09-27 05:31:49

+0

发布导致报告问题的语法有效代码。这是*不是*正在尝试什么。 – user2864740 2014-09-27 05:32:56

汇总功能,如maxcount返回一行(没有分组子句),这就是它们的本质。

举例来说,count(*)在空表会给你一个一行与价值0

我怀疑,虽然我还没有尝试过,但您会在查询中获得一行,并且其值为NULL。这就是我用过的所有其他数据库处理它的方式。假设该列是非NULL指定的,您可以使用该返回值来检测“无行”的情况。即使它允许NULL,这仍然是可行的,这取决于你想在这种情况下做什么。

否则,你可能会更好过检查计数以及与喜欢的东西:

select count(*) as quant, 
     max(surveyID) as surveyID 
from  sg_count 
where userID = 'somebody' 

然后,如果quant是零,你知道有没有行。如果它不为零,那么行,最大值surveyID在另一列中。

+0

查询没有失败,所以OP想要做什么,是任何人的猜测。但这是正确的。 – 2014-09-27 05:36:59

是的,这是相当真实的。 ?您开` `标签>

+----------+ 
| surveyID | 
+----------+ 
| NULL  | 
+----------+ 

$count = $query->num_rows; // 1 
$results = $query->fetch_assoc(); 
echo $results['surveyID']; // NULL