mysqli_commit не работает? - PullRequest
       3

mysqli_commit не работает?

0 голосов
/ 20 августа 2010

Следующая функция, как следует из ее названия, регистрирует / записывает данные из формы регистрации в базу данных.Чтобы избежать неправильного адреса adressID (который ссылается на members (memberID)) таблицы адресов , я должен заключить два запроса на вставку в элементы и адреса соответственно с помощью autocommit и commit.

function register($un, $fname, $lname, $email, $pwd, $phone, $street, $city, $country, $postal, $state )
    {   
        $this->conn->autocommit(FALSE);

        $query_insert_members = "INSERT INTO members(fname, lname, uname, email, phone, password, joinDate) VALUES('".$fname."', '".    
                                $lname."', '".$un."', '".$email."', '".$phone."', '".md5($pwd)."', NOW())";

        $registerquery_members = $this->conn->query($query_insert_members);

        $last_id = $this->conn->insert_id;

        $query_insert_addresses = "INSERT INTO addresses(addressID, street, city, state, country, zip) VALUES('".$last_id."', '".
                            $street."', '".$city."', '".$state."', '".$country."', '".$postal."')";

        $registerquery_addresses = $this->conn->query($query_insert_addresses);

        if($this->conn->commit) 
        {
            return true;
        }
        else
        {   
            $affectd_rows = $this->conn->num_rows;
            return $affectd_rows.$this->conn->error;
            $this->conn->rollback();
        }
    }

Кажется, он ничего не фиксирует и не возвращает никаких сообщений об ошибках.Я получаю только пустое сообщение.

1 Ответ

1 голос
/ 20 августа 2010

Вы получаете доступ к свойству commit, не вызывая функцию commit ().

Причина, по которой вы не получаете ошибки, заключается в том, что $ this-> conn-> commit внутри оператора if будет эффективно проверять, существует ли свойство commit в объекте $ this-> conn, который оценивается как false. Затем вы выполняете ветвь else, в которой вы просто возвращаете затронутые строки, объединенные со строкой ошибки, которая работает без ошибок, несмотря ни на что. Вызов отката после возврата никогда не будет выполнен между прочим.

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