我使用PDO更新表格中的列。它运行正常,execute()
返回1
(成功)。但是,当我检查数据库时,status
列中的值没有改变。
/*
* Add jobs to the beanstalkd queue
*/
foreach($jobs as $job) {
$pheanstalk->useTube('scraper')->put(json_encode([
'username' => $job['username'],
'password' => $job['password'],
'proxy' => $job['proxy'],
'gender' => $job['gender'],
'age' => $job['age'],
'device' => $job['device']
]));
/*
* Update the row in the database and change its status to "queued"
*/
try {
$sql = "UPDATE cron_jobs SET status = :status WHERE id = :cid";
$dbh->prepare($sql);
$sth->bindValue(":status", "queued");
$sth->bindValue(":cid", $job['cid']);
print $sth->execute();
} catch(PDOException $e) {
syslog(LOG_ERR, $e->getTraceAsString());
exit;
}
}
有什么想法吗?它没有到达catch
块,也没有例外。
答案 0 :(得分:0)
也许你可以使用提交。
$dbh->beginTransaction();
//you code
$dbh->commit();
检查PDO文档。 :)
答案 1 :(得分:0)
发现错误。这样:
$dbh->prepare($sql);
应该是:
$sth = $dbh->prepare($sql);
我在上面的脚本中有另一个查询,我经常重用变量名。我完全忘了添加变量。这总是愚蠢的错误让你感受到最长的时间。