mysql_insert_id () возвращает 0

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

вот мой код:

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("\r\n","\n",$insert))."\n\n".str_replace(" ","",str_replace("\r\n","\n",mysql_error())))); $waarde = mysql_insert_id(); 

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

Согласно руководству 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);

Возможно, ваш запрос INSERT не был успешным – например, возможно, вы пытались вставить повторяющиеся данные в столбец, данные которого должны быть уникальными?

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

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

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

 $id = mysql_insert_id(); 

(Это не ваше дело, но я оставляю это на случай, если кому-то это понадобится).

Обратите внимание, что если вы используете запрос вставки / обновления MYSQL, например:

 INSERT INTO table VLAUES(val1, val2) ON DUPLICATE KEY UPDATE col1=val1 

Идентификатор будет возвращаться только тогда, когда произойдет INSERT, но если ваш запрос привел к UPDATE, вы всегда получите 0.