2011-12-07 57 views
2

我該如何檢查從sql查詢返回的值是否爲空?我嘗試使用if(empty($ var)),但那也沒用。我的繼承人代碼如何檢查從SQL/PHP查詢返回的值是否爲空?

PHP代碼:

 while($row = mysql_fetch_array($Result)) 
     { 
      if(count($row) == 0) 
      { 
       .... 
      } 
     } 

我將如何檢查是否$行是空的?

+0

您的意思是什麼「空」? – VolkerK

+0

請注意,mysql擴展已過時,正在棄用。相反,新代碼應該使用mysqli或PDO,它們都具有重要的優點,例如預準備語句。 – outis

回答

8

這是正確的方法,您可以通過查找返回結果中的行數來檢查結果是否爲空。 sql中有一個函數來做這個mysql_num_rows。下面是使用它的方法:

if (mysql_num_rows($Result) == 0) { 
    //results are empty, do something here 
} else { 
    while($admin_row = mysql_fetch_array($Result)) { 
     //processing when you have some data 
} 
+0

請注意,您應該使用===而不是==。 – Mgamerz

1
if (mysql_num_rows($Result) == 0) { 
    //error here 
} else { 
    //loop here 
} 

給你一個錯誤,並與結果的工作場所的地方,如果他們不

1

最簡單的方法是使用mysql_num_rows()

$cnt = mysql_num_rows($Result); 
if (0===$cnt) { 
    echo 'no records'; 
} 
else { 
    while(false!=($row=mysql_fetch_array($Result))) { 
     // ... 
    } 
} 

但請記住,此函數返回從MySQL服務器傳輸到客戶端的記錄數。這不一定是總記錄數。只要你使用mysql_query()沒關係。但是,如果你有例如你可能想要使用大的結果集mysql_unbuffered_query(),然後你不能依賴mysql_num_rows()(爲了你的目的),因爲在調用mysql_fetch_xyz()之前沒有記錄被傳輸。

但是相反,你可以使用類似

$cnt = 0; 
while(false!=($row=mysql_fetch_array($Result))) { 
    $cnt += 1; 
    // ... 
} 
if (0===$cnt) { 
    echo 'no records'; 
} 

現在你有一個額外的變量作爲計數器。你可能想避免這種情況,而是使用類似

$row = mysql_fetch_array($Result); 
if (!$row) { 
    echo 'no records'; 
} 
else { 
    do { 
     // ... 
    } while(false!=($row=mysql_fetch_array($Result))) ; 
} 

這種做法你沒有一個額外的變量,但一些重複代碼($的X =取...行)。
...做出您的選擇;-)

相關問題