mysqli insert_id не работает - PullRequest
0 голосов
/ 20 февраля 2012

Может кто-нибудь взглянуть на это и сказать мне, почему он не работает. Это часть класса, над которым я работаю. Запрос на вставку работает нормально, и если я позвоню $ char-> db-> insert_id; вне класса это работает ($ char - класс)

function createChar($charName, $charRace, $charClass) {
    //put userId, charName and charRace into database
    $sql="insert into characters (userID, name, race, class) values ('$this->userID', '$charName', '$charRace', '$charClass') ";
    $result=$this->db->query($sql);
    if($this->db->affected_rows == '1')
        {
            return '1';
        }
        else
        {
            return '0';
        }

    //get last insert id     
    $this->charID=$this->db->insert_id;

}

Ответы [ 3 ]

2 голосов
/ 20 февраля 2012

Попробуйте переместить $this->charID = $this->db->insert_id; перед if / else, так как оба вернутся, прежде чем доберетесь до линии insert_id.

function createChar($charName, $charRace, $charClass) {
    //put userId, charName and charRace into database
    $sql = "insert into characters (userID, name, race, class) values ('$this->userID', '$charName', '$charRace', '$charClass') ";
    $result = $this->db->query($sql);

    //get last insert id     
    $this->charID = $this->db->insert_id;

    if($this->db->affected_rows == '1')
    {
        return '1';
    }
    else
    {
        return '0';
    }
}
2 голосов
/ 20 февраля 2012

Не удается достичь назначения insert_id, поскольку оператор return пытается поместить его в деталь до того, как произойдет возврат.

0 голосов
/ 20 февраля 2012

Попробуйте ниже.

правильно укажите в кавычках значения:

  $sql="insert into characters (userID, name, race, class) values 
    ('".$this->userID."', '".$charName."', '".$charRace."','".$charClass."') ";
  $result=$this->db->query($sql);
  $this->charID=$this->db->insert_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...