0

我正在尝试检查 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 ,但我真的不知道出了什么问题。希望你能帮忙。

4

3 回答 3

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

于 2013-05-05T00:43:55.567 回答
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)."'");
    }
于 2013-05-05T00:58:51.293 回答
0

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

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

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

除此之外,代码还有其他缺陷,next() 可能返回 false 并且 mysql_query 将失败,此外,请记住转义查询以避免 SQL 注入。

于 2013-05-05T00:54:44.117 回答