2012-09-19 58 views
3

我有一個快速的問題,我希望有一個快速和明確的答案。PHP的PDO執行()與fetch()?

在php.com的手冊中,它指出將值綁定到準備好的查詢後的execute()將在成功時返回true,並在失敗時返回false。夠簡單。

我只是想確保我清楚。 execute()返回的值對應於直接錯誤。例如,如果數據庫以某種方式在成功連接後關閉,並且查詢無法執行 - 或者其他特殊問題。

考慮一些代碼:

protected function territoryCheck($numberOut) 
    { 
     $this->numberOut = $numberOut; 

     //Execute test 
     $this->checkConnect(); 
     $stmt = $this->dbh->prepare("SELECT t_id FROM Territory WHERE t_id = :param1") 
     $stmt->bindParam(':param1', $this->numberOut); 
     $stmt->execute(); 

     //Determine value of test 
     if($stmt == FALSE) 
     { 
      return FALSE; 
     } 
    } 

我寧願相信,因爲我想這不會工作。重點是根據參數是否有相應的值來查看數據庫中是否存在t_id。在這種情況下,我需要使用$ stmt-> fetch()。我說得對嗎?

任何幫助表示讚賞。

編輯:按照同樣的思路,那會是謹慎的 - 或者我應該說最好的做法 - 把

//Execute test 
     $this->checkConnect(); 
     $stmt = $this->dbh->prepare("SELECT t_id FROM Territory WHERE t_id = :param1") 
     $stmt->bindParam(':param1', $this->numberOut); 
     $stmt->execute(); 

一個try-catch內,因爲PDO返回異常?

回答

1

是的,你是對的。 $stmt->execute()僅當它無法執行查詢時才返回false。它不會返回空結果集false。因此,您需要使用fetch()檢查結果,fetch()返回false用於空結果集。

而對於例外情況,只有當您爲​​等方法設置異常模式時,PDO纔會拋出異常。但是,無論是否設置了異常模式,new PDO(...)都會引發異常。

+0

哪個版本會使用新的PDO?一個參考工作特別指出PHP PDO以異常的形式觸發錯誤 - 並且它只是聲明PHP 5。 – Mlagma