lep*_*epe 5 php mysql lastinsertid composite-primary-key
我需要获取具有多列主键的表的最后插入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")
Run Code Online (Sandbox Code Playgroud)
结果:$ last_id = $ mysqli-> insert_id?:getInsertedId() ;
34,15
Run Code Online (Sandbox Code Playgroud)
此时我有一个名为getPK()的函数,它返回给我:
array("group_id","user_id");
Run Code Online (Sandbox Code Playgroud)
我现在需要的是实现getInsertedId().在不使用SQL解析器的情况下,这可能是简单的方法吗?
我很确定这个问题已经有了答案,但我找不到任何东西......
UPDATE
我问这个问题的原因是因为我有一个控制与MySQL数据库相关的一切的类(个人框架的一部分).我有一个名为set()的方法,其中传递查询(如UPDATE,INSERT,DELETE等).我有其他特定的方法,如insert(),其中传递数组.
我有一个变量,我存储了last_inserted_id.该变量可以在以后随时调用.我在不同系统中有许多具有多主键的表.使用insert()方法时,设置last_inserted_id值没有问题,但是当某些系统使用set()方法时,我无法检索该值,我必须返回0.我想改变这种行为.
我想通过上面的例子简化我的解释.
更新2
并非所有系统都由我自己控制.例如,其中一个系统调用soap方法,在该方法中发送查询以执行(任何类型的查询).这些由set()方法处理.然后还有其他soap方法,其中检索最后一个id.为了保持一致性,我想返回该值.
正如 Phil 在评论中指出的那样,MySQLLAST_INSERT_ID()只能返回自动生成的值 (AUTO_INCREMENT)。
此外,您不能在多列上使用 auto_increment:如果您有多个主键,则 auto_increment 只能在 1 列上使用。
总之,您无法LAST_INSERT_ID()在您的案例中插入密钥。
一种解决方案是在 PHP 中处理这种情况,以便getInsertedId()方法返回为插入提供的主键的值。
| 归档时间: |
|
| 查看次数: |
5330 次 |
| 最近记录: |