我正在尝试检查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,但我天真地不知道什么是错的。希望你能帮忙。
答案 0 :(得分:1)
mysql_query()
才会返回false
。如果查询返回空结果,它仍然返回一个资源(不是false,空或0)。
mysql_fetch_array()
将返回false
,否则返回一个数组。
在旁注中,这些方法已被弃用。
答案 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)."'");
}