我需要获取具有多列主键的表的最后插入 id。
- 这些表没有 AUTOCOUNT 列。
- 我正在使用参数化查询(任意顺序)
- 使用 PHP (5.3) 和 MySQLi 模块
- 任意 INSERT SQL 查询。(任何格式)
例如:
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
并非所有系统都由我自己控制。例如,其中一个系统调用soap 方法,在该方法中发送查询以执行(任何类型的查询)。这些由set()方法处理。然后还有其他soap方法可以检索最后一个id。为了保持一致性,我想返回该值。