我的查询是
$result=SELECT MAX(surveyID) as surveyID FROM `sg_count`WHERE userID=$user
其中sg_count
表没有记录
但mysql_num_rows($result)
返回1.
答案 0 :(得分:3)
汇总max
和count
等函数将返回一行(没有分组子句),这就是它们的性质。
举例来说,空表上的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