2012-04-17 17 views
0

我陣列只會得到一個0或1。我使用MySQL的PDO語句,這是我使用PDO獲取得到一個數組,並使用if語句

$result = $fetching -> fetch(); 
$first_result = $result[0]; 

if($first_result === 0){ 
//do something... 
}else{ 
echo "testing"; 
} 

我無論如何,總是得到testing,如果它爲0或不。爲了測試目的,我回應了$first_result[0],它會告訴我什麼是價值。所以我知道這個值會發射出0或者不是0.但是當它是0時,它仍然會迴應出testing

請幫忙嗎?

謝謝!

+1

你有沒有做過的var_dump(),以確保類型匹配?記住===比較類型和值。 – tcole 2012-04-17 05:26:25

回答

3

首先試着把==不是類型等價。第二我總是用這個來檢查是否有任何記錄:

$q = $pdo->prepare('Your SQL'); 
$result = $q->execute($params); 
$rows = $q->fetchAll(PDO::FETCH_ASSOC); 
if (!count($rows) || !$result) 
{ 
    echo 'No rows or error'; 
    // To output error $pdo->errorInfo(); 
} 
else 
{ 
    $el = $row[0]; 
} 

希望有幫助。

+0

如果數據庫變得非常大,fetch會很慢? – hellomello 2012-04-17 06:14:22

+0

取決於你說什麼意思說非常大?如果您期望的行數非常多,那麼爲您的查詢限制和製作分區是一種很好的做法。如果你想一次選擇所有的情況,那麼總會遇到硬件限制。所以,分區是要走的路。 – devdRew 2012-04-17 11:18:50

0

===正在測試類型,在這種情況下,pdo將返回一個字符串,因此您正在對字符串測試一個int。

嘗試:

if($first_result === '0'){ 
+0

這不起作用 – hellomello 2012-04-17 06:15:33

0

看來你的類型不匹配。 ===匹配值和類型

PHP的===運算符使您能夠比較或測試 均等和類型的變量。請參閱下面的例子。

Read More...