Brett
Brett

Reputation: 20049

mysql_error() & mysql_affected_rows() do not work correctly within transaction

I recently asked this question here: Why doesn't this query produce a mysql_error() result?

The suggested solution was to use mysql_affected_rows() instead...... however I just got around to trying this, but it does the opposite...

If I do this..

    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);
    }

...or this:

    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);
    }

It ALWAYS goes in the error section, meaning it always THINKS there was a problem. I tried the query that was output to the log file & it works fine. I also completely removed those error checking sections & everything ran fine.... the database rows were deleted as expected.

How can I error check this effectively?

Edit: Strangely enough when I added the DB Resource Connection as a parameter to the mysql_error() call it worked.

Upvotes: 0

Views: 662

Answers (1)

mlemos
mlemos

Reputation: 1245

I think the problem is that you are not checking the return value of mysql_query. That is the way to test if a query succeeded or failed, not calling mysql_error or mysql_affected_rows.

Upvotes: 1

Related Questions