mysql_num_rows无法正常工作

时间:2013-05-05 00:33:18

标签: php mysql

我正在尝试检查mysql查询的值是返回false还是实际包含值。我的第一个正常工作的解决方案看起来像这样:

    $gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'");
    $iHasTrailer = mysql_fetch_array($gotTrailer);
    while(mysql_num_rows($gotTrailer)==''){
        next($countValues);
        $gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'");
        $iHasTrailer = mysql_fetch_array($gotTrailer);
    }

这是一个真正难看的解决方案,所以我尝试使用mysql_num_rows()代替:

$gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'");
    while(mysql_num_rows($gotTrailer)==0){
        next($countValues);
        $gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'");
    }

但无论出于何种原因,这根本行不通。我也试过使用=== false,但我天真地不知道什么是错的。希望你能帮忙。

3 个答案:

答案 0 :(得分:1)

只有在出错时,

mysql_query()才会返回false。如果查询返回空结果,它仍然返回一个资源(不是false,空或0)。

如果没有更多行,

mysql_fetch_array()将返回false,否则返回一个数组。

在旁注中,这些方法已被弃用。

资源: http://php.net/manual/en/function.mysql-query.php

http://www.php.net/manual/en/function.mysql-fetch-array.php

答案 1 :(得分:0)

mysql_query在出错时返回false。如果要检查查询是否有错误,应检查该函数的返回值。

现在,如果你想检查是否有结果,mysql_num_rows将在错误时返回> = 0或false。所以,你的时间应该是

 while( (mysql_num_rows($gotTrailer) !== false) ){

除此之外,代码还有其他缺陷,next()可能返回false而mysql_query也会失败,还记得逃避查询以避免SQL注入。

答案 2 :(得分:0)

您也可以尝试使用For Loop

    $gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'");

    for($i=0; $i<mysql_num_rows($gotTrailer); $i++)
    {
       next($countValues);
       $gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'");
    }