Мне нужно получить последний вставленный id таблицы, которая имеет многостолбцовые первичные ключи.
Например:
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 парсера?
Я уверен, что ответ на этот вопрос уже есть, но я не смог найти ничего.....
UPDATE
Причина, по которой я задаю этот вопрос, заключается в том, что у меня есть класс, который контролирует все, что связано с базой данных MySQL (часть персонального фреймворка). У меня есть один метод, который называется set(), в котором передаются запросы (например, UPDATE, INSERT, DELETE и т.д.). У меня есть и другие специфические методы, такие как insert(), в которых передаются массивы.
У меня есть переменная, в которой я храню last_inserted_id. Эта переменная может быть вызвана в любое время позже. У меня есть много таблиц в разных системах, которые имеют несколько первичных ключей. При использовании метода insert() у меня нет проблем с установкой значения last_inserted_id, но когда некоторые системы используют метод set(), я не могу получить это значение и должен вернуть 0. Я хотел бы изменить это поведение.
Я хотел бы упростить свое объяснение приведенным выше примером.
UPDATE 2
Не все системы управляются мной. Например, одна из систем вызывает мыльный метод, в котором посылается запрос на выполнение (любой запрос). Они обрабатываются методом set(). Затем существует другой мыльный метод, в котором извлекается последний идентификатор. Для согласованности я хотел бы вернуть это значение.