mysql_error () & mysql_affered_rows () не работают правильно в транзакции - PullRequest
0 голосов
/ 22 февраля 2011

Я недавно задал этот вопрос здесь: Почему этот запрос не дает результата mysql_error ()?

Предложенное решение состояло в том, чтобы использовать вместо этого mysql_affered_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);
    }

Это ВСЕГДА идет в разделе ошибок, означая, что это всегда ДУМАЕТ, что была проблема. Я попытался запрос, который был выведен в файл журнала, и он работает нормально. Я также полностью удалил эти разделы проверки ошибок, и все прошло нормально .... строки базы данных были удалены, как и ожидалось.

Как я могу эффективно проверить это?

Редактировать: Как ни странно, когда я добавил соединение с ресурсами БД в качестве параметра в вызов mysql_error (), это сработало.

1 Ответ

1 голос
/ 22 февраля 2011

Я думаю, что проблема в том, что вы не проверяете возвращаемое значение mysql_query. Это способ проверить, успешно ли выполнен запрос или нет, не вызывая mysql_error или mysql_affered_rows.

...