mysql_insert_id () не смог получить идентификатор автоинкремента - PullRequest
0 голосов
/ 17 сентября 2009
$dml = "insert into ... ";
mysql_query($dml,$con);
$Id = isset($row) ? $row['id'] : mysql_insert_id($con);

Я видел, что запись создана, но просто не могу получить идентификатор.

Что не так?

EDIT

исправлено, это вызвано $ row.

Ответы [ 4 ]

2 голосов
/ 17 сентября 2009

$ строка должна быть установлена, чтобы она никогда не оценивала вызов last_insert_id ()

0 голосов
/ 17 сентября 2009

Из руководства по PHP (http://php.net/manual/en/function.mysql-insert-id.php):

Возвращаемые значения

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

Итак, хотя это может показаться глупым, убедитесь, что таблица, в которую вы вставляете свои данные, содержит столбец с установленным свойством AUTO_INCREMENT.

0 голосов
/ 17 сентября 2009

Вы уверены, что у вас есть auto_increment для этого "идентификатора", в таблицу, которую вы только что вставили некоторые данные?

Инструкция mysql_insert_id гласит, что:

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

Может быть, это объясняет проблему?

Если нет, можете ли вы предоставить нам больше информации? Как структура таблицы и / или полный запрос вставки?

0 голосов
/ 17 сентября 2009

Можно ли вместо этого использовать внутреннюю функцию MySQL LAST_INSERT_ID () в запросе SQL?

...