Получение последнего вставленного индекса mysql

Я использую ADODB для подключения к моей базе данных. После отправки запроса я хочу получить идентификатор последней вставленной строки (из только что вставленного запроса).

В ADODB есть функция Insert_ID(), которая должна получить это, но это не так...
db->Insert_ID()
не работает, как и
db->Insert_ID($table, $key)

Они оба просто возвращают пустые значения. Я дважды проверил свою таблицу, и оператор вставки действительно работает, вставляется новая строка, а ключ - auto_increment. Я неправильно использую Insert_ID или есть лучший способ получить ключ последней вставленной строки?

Спасибо

Изменить: добавление кода

    $result = \PSU::db->Execute( $updateSQL, $values_array );
    $id = \PSU::db->Insert_ID();
    // $id = \PSU::db->Insert_ID( $table, $key );

\PSU::db — это наш класс реализации ADODB, отвечающий за такие вещи, как подключение, отключение и т. д.


person kreynolds    schedule 23.01.2012    source источник
comment
покажите нам свой точный код, который вы используете.   -  person Jan Hančič    schedule 23.01.2012
comment
попробуйте этот $db-›_connectionID-›insert_id; после вашей вставки   -  person Sergey Benner    schedule 23.01.2012
comment
Insert_ID() не имеет параметров и возвращает идентификатор последней вставки, только если база данных поддержка автоинкрементных идентификаторов. Если он не поддерживается, он возвращает FALSE.   -  person hakre    schedule 23.01.2012
comment
Как я уже сказал в посте, таблица поддерживает автоинкремент.   -  person kreynolds    schedule 23.01.2012
comment
Что касается вашего редактирования: пожалуйста, покажите, как вы назначаете объект константе класса. Интересно, как вы волшебным образом выполняете это.   -  person hakre    schedule 23.01.2012
comment
PSU — это наши накладные расходы, которые содержат большинство наших пользовательских библиотек. Чем больше я спрашиваю здесь, тем больше я понимаю, что если вы не были здесь более 5 лет, вы не совсем уверены, почему это работает, это просто работает :-/ По сути, класс PSU:: db при использовании автоматически устанавливает соединение с БД. базу данных, которую вы укажете (IE \PSU::db('support'), тогда вы можете использовать любую команду AODB, чтобы сделать то, что вам нужно. Она вернет успех/неудачу при вставке/обновлении и вернет массив для выбора. I lft из имени таблицы b/c Я не считаю, что это часть проблемы, он вставляет, извлекает, обновляет просто отлично.   -  person kreynolds    schedule 23.01.2012
comment
Понятно, наша версия ADODB нуждалась в обновлении. Спасибо за помощь.   -  person kreynolds    schedule 23.01.2012


Ответы (2)


Возможно ли, что вы отключаетесь и снова подключаетесь к mysql между запросом и insert_id()?

person TrippyD    schedule 03.02.2012

Попробуй это:

$result = \PSU::db->Execute( $updateSQL, $values_array );

return \PSU::db->_connectionID->insert_id ;

_connectionID должен быть исправлен как есть.

Надеюсь, поможет!

person MrHiggs    schedule 19.08.2014