2009-11-11 48 views
0

这是我的PHP代码mysql_num_rows不起作用

$sql="SELECT * FROM table_name WHERE FROM_UNIXTIME(date, '%Y') = $q order by id desc"; 
$q = mysql_query($sql) or die(mysql_error().$sql); 
$sql1="SELECT * FROM table_name WHERE FROM_UNIXTIME(date, '%Y') = $q"; 
$query=mysql_query($sql1); 

这个正确采集结果(一切是正确的)

但是当我用这个来计算的话给我什么总的结果,但是我有例如3个结果:

$total = mysql_num_rows($query); 
+2

请重新设置代码样本的易读性,也请删除愤怒标记!!!!!!谢谢。 – pilcrow 2009-11-11 22:52:28

+0

您的查询是否真的有效?你有没有在第二次查询后尝试mysql_error()? – 2009-11-11 22:53:48

回答

3

因为你的投入不是查询手柄......既然你$ Q设置查询手柄,你应该使用在mysql_num_rows():

$total = mysql_num_rows($q); 
1

,我可以看到$ q是资源不是字符串值,因此$ SQL1查询将失败,出现错误

+0

特别是,$ q首先在WHERE子句中使用,然后保留一个资源,然后再在另一个where子句中使用。此外,WHERE子句中的值未被引用。 – outis 2009-11-11 22:57:56

1

如果您要求行数在实际检索行之前,数据库可能会返回零或中间数字。对于Oracle和MySQL这是真的(不知道MSSQL,但我怀疑它是相同的)。来自PHP文档:

Note: If you use mysql_unbuffered_query(), mysql_num_rows() 
will not return the correct value until all the rows in the 
result set have been retrieved. 

即使对于缓冲查询,PHP也必须获取所有行以对其进行计数。