Как определить последующий id в базе данных

artnik7

Новичок
Мне нужно узнать каким будет следующий первичный автоувеличиваемый ID в MySql.

К примеру, в интерфейсе админки выводяться 10 результатов из базы, последний ID 10, если я удалю, к примеру, последние два поля из базы (10 и 9), то в админке отобразиться последней резулт с ID 8. И если после этого занести новое поле в базу, то его ID будет 11, т.к. десятка уже была. Получаеться что использовать ORDER BY id DESC потом приплюсовать 1 к резулту не совсем правильно, так как последующий ид может быть насколько угодно больше, чем последний ID в таблице.

Так вот, вопрос назревает, как определить через PHP каким будет следующий созданный ID?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Вопрос, зачем тебе оно надо?
 

artnik7

Новичок
Мне нужно знать следующий ID для того, чтобы яваскриптом добавлять новые поля в админку, сложно объяснить, там очень сложный процес
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
artnik7
Ну так потрудись объяснить, пока что я не вижу реальной нужды в такой глупом вопросе)
 

artnik7

Новичок
)). Ну ладно, попробую. У меня в админке выводяться поля и БД для добавления слайдеров изображений и слайдов для них, для каждого поля выводиться ID, его нужно будет знать при выводе слайдера. Создаеться такой слайдер кнопкой, добавить слайдер, она яваскриптом добавляет новые поля, который при сабмите грузяться в базу. последний ИД нужен вопервых для его предпросмотра без сохранения (сабмитом), во вторых он нужен для создания атрибута name новых полей
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Да уж, объяснил)))

show table status from database where Name='table_name'

Далее парсим...
 

artnik7

Новичок
Dovg а что указывать в качестве параметра для mysql_insert_id()? Если просто втупую прописать echo mysql_insert_id(), то выводит 1
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
artnik7
Совет mysql_insert_id не рабочий
 

artnik7

Новичок
c0dex, Спасибо, вроде работает, выдало массив с [Auto_increment] => 59. Это как раз и есть последующий ID
 

artnik7

Новичок
Только вытащить его у меня чето не получаеться.
Вот что находиться в массиве
PHP:
Array ( [0] => stdClass Object ( [Name] => oversky_sliders [Engine] => MyISAM [Version] => 10 [Row_format] => Dynamic [Rows] => 1 [Avg_row_length] => 20 [Data_length] => 340 [Max_data_length] => 281474976710655 [Index_length] => 2048 [Data_free] => 320 [Auto_increment] => 59 [Create_time] => 2011-07-18 17:11:45 [Update_time] => 2011-07-20 14:10:26 [Check_time] => [Collation] => utf8_general_ci [Checksum] => [Create_options] => [Comment] => ) )
если просто выводить $array[0]['Auto_increment'] то выдает ошибку
Cannot use object of type stdClass as array
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
artnik7
это потому что надо выводить не так как ты, а по другому, это объект.

PHP:
$x = $array[0];
echo $x->Auto_increment;
 

Adelf

Administrator
Команда форума
artnik7
ой не торопись :)
Если я тебя правильно понял:
А если кто-нибудь другой успеет создать в базе запись ДО того как ты создаешь свою? В итоге получится, что изображения загрузятся к чужому id. Или два юзера одновременно зайдут и начнут картинки к одному id крепить.
Просто убери добавление изображений в добавлении(оставь только в редактировании), если все так сложно у тебя.
Совет простой - пока id не взят(читай не сделан insert) - не юзай его даже.

c0dex'у минус в карму :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Adelf
человек хотел - человек получил. Минус запиши себе
 

artnik7

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

Adelf

Administrator
Команда форума
artnik7
закладываешь в систему большую дыру.

c0dex
будь проще :) если ты индуист, то сорри за карму :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Adelf
При чем тут я, индуисты и тд? Я лишь подсказал решение. Пистолет как известно сам не стреляет, стреляют из него. Так и тут, если человек очень хочет - пусть использует. Хотя, я очень тяжело себе представляю, где мне бы понадобилось подобное сделать.
 
Сверху