2009-10-19 68 views
9

這裏是描述可變我從我的表呼應:如何檢查PhP中的mysql條目是否爲空?

$description = mysql_result($result,$i,"description"); 

有時$第i個記錄是空的,不具有任何數據/沒有說明。

我想要做的是回聲是空

if (isset($description)){ echo "No description available";} 
else{ echo $desctipion;} 

我嘗試不工作,雖然,因爲它呼應然後對每條記錄:無說明即使是那些不是活得記錄「沒有可用的描述」 t空了。

答案是?

回答

25

isset($description)將導致真實的,因爲$描述仍設置,即使它的值是「空」。你需要使用的是empty

if (empty($description)) { 
    echo "No description available"; 
} else { 
    echo $description; 
} 
+0

完美的作品,非常感謝。 – 2009-10-19 23:08:38

+0

你永遠不需要使用空! – dynamic 2012-01-28 15:59:02

+2

@ yes123:請您詳細說明一下嗎?你不需要每個帳戶都需要它,但爲什麼不使用它? – Sk8erPeter 2012-06-19 09:32:07

0

使用mysql_affected_rows功能:

$qtd = mysql_affected_rows($result); 
+1

如果列中包含NULL值,那麼這不會產生影響。 – 2009-10-19 23:07:18

+0

對不起,我看錯了這個問題。你的回答是正確的。 +1對你:) – Cesar 2009-10-19 23:12:04

2

這取決於你的意思。

mysql_result返回FALSE失敗,如果您指定了無效(行,字段),則會發生這種情況。要檢查這一點,你想要使用同一性運算符===,它會檢查值和類型。等號運算符==empty()函數以及if語句的條件求值都檢查值,但不檢查類型。

這意味着使用其中的一種方法,各個值之間沒有區別,它們都等於Boolean FALSE,如空字符串,空數組,字符串'0'和值NULL

所以,如果你想成爲真正徹底瞭解它,你可以這樣做以下:在一系列類似的條件

if ($description === FALSE) { 
    throw new Exception("The row $i was out of range in query $query."); 
} else if ($description === NULL) { 
    // assuming that the description field has a default value of NULL 
    // * this one I'm not sure about.. the documentation for mysql_result claims 
    // that it returns a string, so this may never happen. 
    // It's left as an exercise for the reader. 
    throw new Exception("Uninitialized value in result row $i of db query $query"); 
} else if ($description === '') { 
    echo "No description available"; 
} else { 
    echo $description; 
} 

由於empty()回到true到平等(==)與FALSE,這更在結果可能實際上爲"0"的情況下,嚴格的類型檢查尤爲重要。

顯然我不允許發佈多個超鏈接,所以我無法鏈接到比較運算符(「http://php.net/manual/en/language.operators.comparison.php」)或空函數(「http://php.net/empty」)的文檔。幸運的是,他們的安全相對鬆懈。 Mwuh哈!