mysqli_commit无法正常工作?

时间:2010-08-20 14:08:35

标签: php mysqli

以下函数顾名思义,将注册表中的数据注册/记录到数据库中。为了避免表地址获取错误的adressID(引用成员(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 个答案:

答案 0 :(得分:1)

您访问属性“commit”,而不是调用函数“commit()”。

您没有收到错误的原因是因为$ this-> conn->在if语句中提交将有效地检查$ this-> conn对象中是否存在提交属性,该属性的计算结果为false。然后执行else分支,在那里只返回与错误字符串连接的受影响的行,无论如何都可以正常工作。返回后调用回滚将永远不会执行btw。