Почему этот запрос не дает результата mysql_error ()? - PullRequest
0 голосов
/ 18 февраля 2011

Я выполнял некоторый код и не получал никаких ошибок, но строка тоже не удалялась .... поэтому я был немного смущен.Поэтому я проверил код и обнаружил, что у меня возникла проблема с запросом, но в то же время он не дал истинного результата в моем тесте с mysql_error ().

Я использую приведенный ниже код..

        try {
            // Start transaction
            beginTransaction($this->db_connection);
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }

        try {

            // Delete main entry
            $this->removeMainEntry($lid);

            // Delete list columns
            $this->removeListColumns($lid);

            // Commit changes to database
            commitChanges($this->db_connection);

        } catch (Exception $e) {

            try {
                // Rollback changes
                rollback($this->db_connection, $e->getMessage());
            } catch (Exception $re) {
                throw new Exception($re->getMessage());
            }

            throw new Exception($e->getMessage());                    

        }

Вот в чем проблема, и она не входит в раздел mysql_error () ..

protected function removeMainEntry($lid) {

    $lid = (int) $lid;

    // Remove from database
    $query = "DELET FROM lists WHERE id=" . $lid . " LIMIT 1";
    $sql = mysql_query($query, $this->db_connection);

    if (mysql_error()) {
        $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 (!function_exists('beginTransaction')) {

    function beginTransaction($dblink) {

        $query = "BEGIN";
        mysql_query($query, $dblink);

        if (mysql_error()) {
            $etext = 'Problem adding new list data to database.';
            $log_error = $etext . ' MySQL Error: ' . mysql_error() . '. Query: ' . $query;
            log_site_error($log_error);
            throw new Exception($etext);            
        }

    }

}

if (!function_exists('commitChanges')) {

    function commitChanges($dblink) {

        $query = "COMMIT";
        mysql_query($query, $dblink);

        if (mysql_error()) {
            $etext = 'Problem adding new list data to database.';
            $log_error = $etext . ' MySQL Error: ' . mysql_error() . '. Query: ' . $query;
            log_site_error($log_error);
            throw new Exception($etext);            
        }

    }    

}

if (!function_exists('rollback')) {

    function rollback($dblink, $error = '') {

        $query = "ROLLBACK";
        mysql_query($query, $dblink);

        if (mysql_error()) {
            $etext = $error . ' Additionally there was a problem rolling back the changes in the database. Please check the logs.';
            $log_error = $etext . ' MySQL Error: ' . mysql_error() . '. Query: ' . $query;
            log_site_error($log_error);
            throw new Exception($etext);
        }

    }

}

1 Ответ

3 голосов
/ 18 февраля 2011

Если вы удалите 0 строк, это, вероятно, все равно будет считаться успешным. Используйте mysql_affered_rows , чтобы убедиться, что вы действительно что-то сделали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...