mysql insert id () возвратит 0

Я знаю, что есть много тем с таким же названием. Но в основном это запрос, который был вставлен не в то место. Но мне кажется, я все правильно понял. Поэтому проблема в том, что я все равно получаю 0, даже когда данные вставляются в БД. Кто-нибудь знает ответ, в котором я могу ошибаться?

вот мой код:

mysql_query('SET NAMES utf8');
    $this->arr_kolommen = $arr_kolommen;
    $this->arr_waardes = $arr_waardes;
    $this->tabel = $tabel;
    $aantal = count($this->arr_kolommen);
    //$sql="INSERT INTO `tbl_photo_lijst_zoekcriteria` ( `PLZ_FOTO` , `PLZ_ZOEKCRITERIA`,`PLZ_CATEGORIE`)VALUES ('$foto', '$zoekje','$afdeling');";
    $insert = "INSERT INTO ".$this->tabel." ";
    $kolommen = "(";
    $waardes = " VALUES(";
    for($i=0;$i<$aantal;$i++)
    {
        $kolommen .=$this->arr_kolommen[$i].",";
        $waardes .="'".$this->arr_waardes[$i]."',";
    }
    $kolommen = substr($kolommen,0,-1).")";
    $waardes = substr($waardes,0,-1).")";
    $insert .=$kolommen.$waardes;   
    $result = mysql_query($insert,$this->db)  or die ($this->sendErrorToMail(str_replace("  ","",str_replace("rn","n",$insert))."nn".str_replace(" ","",str_replace("rn","n",mysql_error()))));
    $waarde = mysql_insert_id();

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

4 ответов


по словам руководство mysql_insert_id возвращает:

идентификатор, созданный для столбца AUTO_INCREMENT предыдущим запросом успех,0, Если предыдущий запрос не создает AUTO_INCREMENT значение или FALSE, если соединение MySQL не было установлено.

Так как он не дает вам false и не правильное число указывает, что запрашиваемая таблица не генерировала значение автоматического приращения.

есть две возможности, о которых я могу думать:

  1. в вашей таблице нет поля auto_increment
  2. поскольку вы не предоставляете ссылку на mysql_insert_id (), но используя ссылку с mysql_query (), это может быть не правильная таблица, которая запрашивается при получении последнего вставленного идентификатора.

устранение:

  1. убедитесь, что у него есть поле auto_increment
  2. предоставьте ссылку также: $waarde = mysql_insert_id($this->db);

возможно, ваш запрос вставки не был успешным-например, возможно, вы пытались вставить дубликаты данных в столбец, данные которого должны быть уникальными?


Если идентификатор действительно установлен в auto increment и по-прежнему получает "0", поскольку ваш ответ делает столбец и значение count, я испытал это только позже, я заметил, что количество моих столбцов не соответствует значениям count.


Codeigniter имеет нечетное behaviourd при вызове mysql_insert_id(). Функция возвращает 0 после первого звонка. Поэтому вызов его дважды вернет 0.

используйте переменную вместо вызова функции больше раз:

$id = mysql_insert_id();