2013-02-05 80 views
0

數據庫沒問題,但我無法確定爲什麼$ ROW無法識別爲NULL。檢查'pdo->查詢foreach'是否返回null

我有這樣的代碼:

$pdo = new PDO("mysql:host=" . $this->hostname . ";dbname=" . $this->dbname, $this->username, $this->password); 

foreach($pdo->query('SELECT * FROM people WHERE name="Joshua"') as $row): 
    if($row['name'] != NULL): 
     echo "WE HAVE ONE JOSHUA"; 
    else: 
     echo "WE DO NOT HAVE ANY JOSHUA"; 
    endif; 
endforeach; 

當我運行該腳本,我得到的:「我們有一JOSHUA」消息;

當我在數據庫中不存在的名稱PDO-> QUERY中更改name =「Joshua」時,我沒有收到「我們沒有任何JOSHUA」消息;

任何提示處理這個?

我只是想創建一個語句來控制FOREACH是否返回NULL或NOT。

在此先感謝,並說不好英語。

回答

0

這個怎麼樣?

foreach($pdo->query('SELECT COUNT(*) totalCOunt FROM people WHERE name="Joshua"') as $row): 
    if($row['totalCOunt'] != 0): 
     echo "WE HAVE ONE JOSHUA"; 
    else: 
     echo "WE DO NOT HAVE ANY JOSHUA"; 
    endif; 
endforeach; 
+0

呵呵,謝謝!這正是我正在尋找的。再次感謝! – Alexandre

+0

爲什麼你需要迭代? –

+1

我在這裏放的代碼是我真正需要的一個例子。其實我需要檢查用戶登錄和密碼是否與數據庫信息匹配。 – Alexandre

2

您可以使用PDO rowCount測試結果是否爲空。參見:

$cmd = $pdo->prepare('SELECT * FROM people WHERE name="Joshua"'); 
$cmd->execute(); 
if ($cmd->rowCount() > 0) 
{ 
    while ($row = $cmd->fetch()) 
    { 
     do... 
    } 
} 

PDO不返回錯誤。您可以使用PDOStatement :: errorCode()。

0

您只需要一個循環來處理多行
雖然如果您只獲得一行,則不需要循環。

$result = $pdo->query('SELECT * FROM people WHERE name="Joshua"'); 
$row = $result->fetch(); 
if ($row) { 
    echo "WE HAVE ONE JOSHUA"; 
    // here you have Joshua's data in $row 
} else { 
    echo "WE DO NOT HAVE ANY JOSHUA"; 
}