我对自己无法执行此更新语句的事实视而不见。
$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'
可以工作)。
最佳答案
我使用了一个在线可用的数据库类(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();
}
关于php - PDO更新不起作用,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23317974/