mysql_num_rows不起作用

时间:2009-11-11 22:49:59

标签: php sql mysql

这是我的PHP代码

$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);

3 个答案:

答案 0 :(得分:3)

因为您的输入不是查询句柄...因为您将$ q设置为查询句柄,所以您应该在mysql_num_rows()中使用它:

$total = mysql_num_rows($q);

答案 1 :(得分:1)

我可以看到$ q是资源而不是字符串值,因此$ sql1查询将失败并显示错误

答案 2 :(得分: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也必须获取所有行才能计算它们。