PDO更新返回成功,但不更新数据库

时间:2015-12-16 22:01:13

标签: php mysql pdo

我使用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块,也没有例外。

2 个答案:

答案 0 :(得分:0)

也许你可以使用提交。

$dbh->beginTransaction();
//you code
$dbh->commit();

检查PDO文档。 :)

答案 1 :(得分:0)

发现错误。这样:

$dbh->prepare($sql);

应该是:

$sth = $dbh->prepare($sql);

我在上面的脚本中有另一个查询,我经常重用变量名。我完全忘了添加变量。这总是愚蠢的错误让你感受到最长的时间。