Мне нужно получить последний вставленный идентификатор таблицы с первичными ключами из нескольких столбцов.
- В этих таблицах нет столбца AUTOCOUNT.
- Я использую параметризованные запросы (в произвольном порядке)
- Используя PHP (5.3) и модуль MySQLi
- Произвольный запрос SQL INSERT.(В любом формате)
Например:
Table: foo
Primary key: [ group_id , user_id ]
Query: INSERT INTO foo (group_id, user_id, name, email) VALUES (?, ?, ?, ?);
Parameters: array(34,15,"John","john@example.com")
Результат: $ last_id = $ mysqli-> insert_id?: getInsertedId () ;
34,15
На данный момент у меня есть функция с именем getPK (), которая возвращает мне:
array("group_id","user_id");
Теперь мне нужно реализовать getInsertedId () .Что может быть простым способом сделать это без использования парсера SQL?
Я почти уверен, что ответ на этот вопрос уже есть, но я ничего не смог найти ...
ОБНОВЛЕНИЕ
Причина, по которой я задаю этот вопрос, заключается в том, что у меня есть класс, который контролирует все, что связано с базой данных MySQL (часть личной структуры).У меня есть один метод, который называется set () , в котором передаются запросы (например, UPDATE, INSERT, DELETE и т. Д.).У меня есть другие конкретные методы, такие как insert () , в которых передаются массивы.
У меня есть переменная, в которой я храню last_inserted_id.Эта переменная может быть вызвана в любое время позже.У меня есть много таблиц в разных системах, которые имеют несколько первичных ключей.При использовании метода insert () у меня нет проблем с установкой значения last_inserted_id, но когда некоторые системы используют метод set () , я не могу получить это значение, и у меня естьчтобы вернуть 0. Я хотел бы изменить это поведение.
Я хотел упростить свое объяснение с приведенным выше примером.
ОБНОВЛЕНИЕ 2
Невсе системы контролируются мной.Например, одна из систем вызывает метод мыла, в котором отправляется запрос на выполнение (любой вид запроса).Они обрабатываются методом set () .Тогда есть другой метод мыла, в котором извлекается последний идентификатор.Для согласованности я хотел бы вернуть это значение.