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