@80689248440

Как при INSERT INTO в php получить поле AUTO_INCREMENT?

так не работает
"INSERT INTO _postmeta(post_id, meta_key, meta_value) VALUES('1', '1', '1'); SELECT LAST_INSERT_ID( )"

$a = mysql_query("INSERT INTO _postmeta(post_id, meta_key, meta_value) VALUES('1', '1', '1')");
$b = mysql_insert_id();
var_dump($a);
var_dump($b);


само поле которое AUTO_INCREMENT является bigint(20) и поэтому поле выдаёт левое значение о чем и написано тут www.php.su/mysql_insert_id

mysql_insert_id() конвертирует возвращаемый функцией MySQL C API тип значения функции mysql_insert_id() в тип long int (называемый int в PHP). Если ваша колонка AUTO_INCREMENT имеет тип BIGINT, значение, возвращаемое функцией mysql_insert_id(), будет искажено. Вместо него используйте функцию SQL LAST_INSERT_ID().


как в запросе из php использовать LAST_INSERT_ID() не понял

SELECT * FROM _postmeta ORDER BY id DESC LIMIT 1 не предлагать


INSERT INTO `_postmeta` (`post_id`,`meta_key`,`meta_value`) VALUES (1, 1, 1);
SET @lastID := LAST_INSERT_ID();
INSERT INTO `_postmeta` (`post_id`,`meta_key`,`meta_value`) VALUES (1, 1, @lastID);
не подходит так как нужно вернуть именно в php
  • Вопрос задан
  • 679 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT LAST_INSERT_ID();
Кстати, вариант с ORDER BY id DESC LIMIT 1 не годится, он не гарантирует корректной работы при нескольких параллельных соединениях.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
так не работает
"INSERT INTO _postmeta(post_id, meta_key, meta_value) VALUES('1', '1', '1'); SELECT LAST_INSERT_ID()


как выяснили? запускали в консоли на выполнение?
и еще вопрос, КАКОЕ ПОЛЕ У ВАС АВТОИНКРЕМЕНТ?
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
такие вещи делаются триггерами: полученный после вставки id берется и пишется в другую таблицу
но нужно помнить про недостатки самих триггеров
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы