我一直在我的网站使用PDO;然而,当涉及到更新的auditkey表,下面(简化方法)一键将不会对数据库成功执行:通过PDO SQL和使用交易将不会执行
try {
$dbh = new PDO(etc...);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$currentKey = getCurrentKey(); //returns a SHA1 key
beginTransaction($dbh); // not a typo, call to a wrapper function!
$stmt = $dbh->prepare("UPDATE auditkey SET key=:nextKey");
$stmt->bindValue(':nextKey', sha1($currentKey), PDO::PARAM_STR);
$success = $stmt->execute();
$dbh->commit();
}
我得到的错误是:
SQLSTATE [42000]:语法错误或 访问冲突:1064您的SQL语法中有一个 错误;检查 的手册,当更新修订,并手动输入第1行
对应于你的MySQL 服务器版本正确的语法 利用近 “键=” f6aa38e947482563913c56c2c72a59ea623c7dfb' ,在SQL作品精细:
UPDATE `auditkey` SET `key`='f6aa38e947482563913c56c2c72a59ea623c7dfb';
最近我学到了一些东西,如果你的脚本中还有一个'catch'函数,在'try'后面使用'$ dbh-> rollback()',你必须将'beginTransaction'放在你的'尝试',否则你的回滚没有一点回滚到。 – TheCarver 2013-09-15 11:56:09