2013-12-08 33 views
0

我有以下的類,它的數據庫交互的護理:PHP使用PDO和PDOStatement對象

class DBH { 
    private $dbh; 

    public function __construct() { 
     $this->dbh = new PDO("mysql:host=localhost;dbname=*", "*", "*"); 
    } 

    public function query($query, $values) { 
     if (!is_array($values)) { 
      $values = array($values); 
     } 
     $statement = $this->dbh->prepare($query); 
     $i = 1; 
     foreach ($values as $value) { 
      $statement->bindParam($i++, $value); 
     } 
     $statement->execute(); 
     return $statement; 
    } 

    public function num_rows($query, $values) { 
     $statement = $this->query($query, $values); 
     return $statement->rowCount(); 
    } 

    public function insert($table, $keyvaluepairs) { 
     $sql = "INSERT INTO `{$table}` ("; 
     $values_sql = ") VALUES("; 
     $values = array(); 
     foreach ($keyvaluepairs as $key => $value) { 
      $sql .= "`${key}`, "; 
      $values_sql .= "?, "; 
      $values[] = $value; 
     } 
     $query = substr($sql, 0, -2).substr($values_sql, 0, -2).")"; 
     return $this->query($query, $values); 
    } 

    public function close() { 
     $this->dbh = null; 
    } 
} 

現在我把以下內容:

$insert_statement = $dbh->insert("users", array(
    "email" => $email, 
    "password" => $password, 
    "ingame" => $ingame, 
    "kiosk" => $kiosk 
)); 

有沒有一種方法來檢查$insert_statement成功了嗎?

我知道$statement->execute();返回truefalse執行後,但我返回整個$statement

如果有可能我想用$statement來檢查最後​​是否成功。
否則當然仍然有可能在我的DBH類中查詢狀態緩存。

+1

設置PDO來拋出錯誤異常,未能執行語句會引發異常。 – DCoder

回答

2

您可以返回一個包含$statement和​​結果的布爾值的元組。或者更好:在失敗時拋出異常 - 這是他們的目的。

相關問題