2013-05-05 36 views
0

我试图检查一个MySQL查询的值是否返回false或实际包含值。我这工作正常第一个解决方案是这样的:mysql_num_rows无法正常工作

$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,但我很奇怪不知道什么是错的。希望你能帮助。

+0

$ countValues被重置()“在此之前的所有编?你能解释一下吗? – 2013-05-05 00:43:49

+1

你的问题是你使用'mysql_'而不是'PDO'。 – 2013-05-05 00:59:31

回答

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

+0

我认为问题在于数据库中的所有行都包含值预告片,只是其中一些包含空字符串。谢谢。 – Amnestic 2013-05-05 00:55:52

0

的mysql_query返回出错假。如果你想检查查询是否有错误,你应该检查该函数的返回值。

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

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

而且这一切,代码中有其他缺陷,接下来的()可以返回false,并且请求mysql_query会失败,也记得要逃避查询,以避免SQL注入。

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)."'"); 
    }