2014-02-20 19 views
1

我有這樣一段代碼在我的功能回聲「空」,如果它不能搶到存儲在變量$結果的數據。 「空白」部分工作正常。但是,如果條件進入else部分,它不會迴應用戶數據,爲什麼?PHP的if else而(與MySQL)語句不工作

$result = mysql_query("SELECT * FROM `users` ORDER BY `earnings` DESC LIMIT ".$load.",1") or die (mysql_error()); 
if(!mysql_fetch_row($result)) { 
    echo "Empty"; 
} else { 
    while($data = mysql_fetch_array($result)) 
    { 
     if($name == true) { 
      echo ucfirst($data['user']); 
     } else { 
      echo ucfirst($data['earnings']); 
     } 
    } 
} 
+0

什麼是'$ name'?另請注意,'mysql _ *()'函數已被棄用多年並且不受支持。改變你的代碼! – miken32

+0

@ miken32我的函數中的一個變量。 (這段代碼是我函數的一部分)。 – user3320550

回答

0

通過致電mysql_fetch_row($result)作爲測試,您總是錯過了第一行數據。檢查行數是否爲0。

+0

它的工作!謝謝。 – user3320550

+0

請更新您的代碼,以停止依賴未來幾年未更新的功能。你可以在半小時內更新你的代碼來使用'mysqli _ *()'。 – miken32

-1

試試這個

$result = mysql_query("SELECT * FROM `users` ORDER BY `earnings` DESC LIMIT ".$load.",1") or die (mysql_error()); 
    if(!$result) { 
     echo "Empty"; 
    } else { 
     while($data = mysql_fetch_array($result)) 
     { 
      if($name == true) { 
       echo ucfirst($data['user']); 
      } else { 
       echo ucfirst($data['earnings']); 
      } 
     } 
    } 
+1

根本沒有解釋。沒有跡象表明什麼是改變或什麼是錯的。這是勺子餵養。 – Ali

0

HI我覺得你的問題是在mysql_fetch_array()。該函數將返回數組沒有關聯數組..

可以使用

$result = mysql_query("SELECT * FROM `users` ORDER BY `earnings` DESC LIMIT ".$load.",1") or die (mysql_error()); 
if(mysql_num_rows($result) == 0) { 
    echo "Empty"; 
} else { 
    while($data = mysql_fetch_array($result,MYSQL_BOTH)) 
{ 
    if($name == true) { 
     echo ucfirst($data['user']); 
    } else { 
     echo ucfirst($data['earnings']); 
    } 
} 
} 

使用mysql_num_rows這一翻譯和mysql_fetch_row的檢查空記錄。

我通過第二個參數中mysql_fetch_array其中MYSQL_BOTH將返回兩個數組和關聯數組..

或者你可以使用

mysql_fetch_assoc()函數mysql_fetch_array的istead()..

隨意問問題。

+0

mysql_fetch_array()返回兩者。 – miken32

+0

邁克你是對的,它返回兩個,但當你通過第二個參數MYSQL_BOTH作爲我的權利在我的解決方案.. – Haroon

+0

MYSQL_BOTH是默認設置。 – miken32