2014-04-27 34 views
0

我正盯着爲什麼我無法執行此更新語句的事實。PDO更新不起作用,沒有錯誤

$prepare = 'UPDATE plugins SET status=? WHERE name=?'; 
$execute = array("0", "testplugin"); 

$statement = $this->_dbConnectionInstance->prepare($prepare); 
$statement->execute($execute); 

我設置錯誤報告給PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION和它產生的任何錯誤。但是,數據庫中的行在執行後不會更改。直接在數據庫上執行查詢(PHPMyAdmin,用值替換問號)確實有效,奇怪的是。 此外,數據庫連接還可以(簡單查詢'SELECT * FROM plugins'確實有效)。

The database structure

+1

也許就沒有插件名稱爲排== testplugin? –

+0

有一個,我仔細檢查了一下;) – jroeleveld

+0

好的。只是爲了檢查,但第一行不會以';'結尾。 –

回答

0

我用了一個在線可用的數據庫類(PDO-Quick),其中有一個建築錯誤的。在實例化數據庫類時,開始一個事務(1)。但是,在課堂上無處承諾,交易始終保持「開放」。我現在在每個查詢之前開始一個事務,在執行後提交併在發生任何錯誤時回滾(2)。

(1)

$this->_dbConnectionInstance->beginTransaction(); 

(2)

try { 
    $this->_dbConnectionInstance->beginTransaction(); 
    $stmt = $this->_dbConnectionInstance->prepare($prepare); 

    $stmt->execute($execute); 
    $this->_dbConnectionInstance->commit(); 
} catch(PDOException $e) { 
    $this->_dbConnectionInstance->rollBack(); 
    exit(); 
}