Я знаю, что есть много тем с тем же названием. Но в основном это запрос, который был вставлен в неправильном месте. Но я думаю, что правильно. Поэтому проблема в том, что я все равно получаю 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
а не правильный номер, это означает, что запрошенная таблица не генерирует значение автоматического увеличения.
Есть две возможности, о которых я могу думать:
Решение:
$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.