mysql_error()& mysql_affected_rows()在事务中无法正常工作

时间:2011-02-21 21:53:08

标签: php mysql transactions innodb

我最近在这里问过这个问题:Why doesn't this query produce a mysql_error() result?

建议的解决方案是使用mysql_affected_rows()而不是......但是我只是试着尝试这个,但它恰恰相反......

如果我这样做..

    if (mysql_affected_rows() < 1) {
        $etext = 'Problem removing list main entry from database.';
        $log_error = $etext . ' MySQL Error: ' . mysql_error() . '. Query: ' . $query;
        log_site_error($log_error);
        throw new Exception($etext);
    }

......或者这个:

    if (mysql_affected_rows() < 0) {
        $etext = 'Problem removing list main entry from database.';
        $log_error = $etext . ' MySQL Error: ' . mysql_error() . '. Query: ' . $query;
        log_site_error($log_error);
        throw new Exception($etext);
    }

它总是进入错误部分,这意味着它始终认为存在问题。我尝试了输出到日志文件&amp;它工作正常。我还完全删除了那些错误检查部分&amp;一切运行正常....数据库行被按预期删除。

如何有效地对此进行错误检查?

编辑:奇怪的是,当我将数据库资源连接作为参数添加到mysql_error()调用时,它有效。

1 个答案:

答案 0 :(得分:1)

我认为问题在于你没有检查mysql_query的返回值。这是测试查询是成功还是失败的方法,而不是调用mysql_error或mysql_affected_rows。