空白表返回mysql_num_rows($ result)= 1

时间:2014-09-27 05:28:19

标签: php mysql

我的查询是

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

其中sg_count表没有记录

mysql_num_rows($result)返回1.

2 个答案:

答案 0 :(得分:3)

汇总maxcount 等函数将返回一行(没有分组子句),这就是它们的性质。

举例来说,空表上的count(*)会为您提供值为0一行行。

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

否则,你最好还是检查计数,例如:

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

然后,如果quant为零,则表示没有行。如果它不为零,则行,而surveyID的最大值位于另一列中。

答案 1 :(得分:2)

是的,这是真的。当您选择该记录时,它将产生一行:

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

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