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();
返回true
或false
執行後,但我返回整個$statement
。
如果有可能我想用$statement
來檢查最後是否成功。
否則當然仍然有可能在我的DBH
類中查詢狀態緩存。
設置PDO來拋出錯誤異常,未能執行語句會引發異常。 – DCoder