gpt4 book ai didi

php - MySQL+PHP : getting last_id of multiple/composite primary key

转载 作者:可可西里 更新时间:2023-11-01 07:06:35 24 4
gpt4 key购买 nike

我需要获取具有多列主键的表的最后插入的 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。为了保持一致性,我想返回该值。

最佳答案

正如 Phil 在评论中指出的那样,MySQL LAST_INSERT_ID()只能返回自动生成的值 (AUTO_INCREMENT)。

此外,您不能在多个列上使用 auto_increment:如果您有多个主键,那么只能在 1 个列上使用 auto_increment。

总之,在您的情况下,您无法使用 LAST_INSERT_ID() 插入 key 。

一种解决方案是在 PHP 中处理这种情况,以便您的 getInsertedId() 方法返回为插入提供的主键值。

关于php - MySQL+PHP : getting last_id of multiple/composite primary key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7187690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com