当前位置: 首页 > 面试题库 >

在PHP上使用ON DUPLICATE KEY UPDATE时获取mysql_insert_id()

严昀
2023-03-14
问题内容

我已经找到了单独使用mySQL的一些答案,但是我希望有人可以向我展示一种使用PHP处理插入/更新时获取mysql DB最后插入或更新的行的ID的方法。

当前,我有类似这样的内容,其中column3是唯一键,还有一个id列是自动递增的主键:

$query ="INSERT INTO TABLE (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE SET column1=value1, column2=value2, column3=value3";
mysql_query($query);

$my_id = mysql_insert_id();

$ my_id在INSERT上是正确的,但是在更新行时(在DUPLICATE KEY UPDATE上)是错误的。

我见过一些人建议您使用类似

INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)

在调用ON DUPLICATE KEY时获得有效的ID值-但这会将有效ID返回给PHP mysql_insert_id()函数吗?


问题答案:

这是亚历山大建议的答案:

当您使用id = LAST_INSERT_ID(id)时,它将设置mysql_insert_id =更新后的ID的值-因此您的最终代码应类似于:

<?
    $query = mysql_query("
        INSERT INTO table (column1, column2, column3) 
        VALUES (value1, value2, value3) 
        ON DUPLICATE KEY UPDATE
            column1 = value1, 
            column2 = value2, 
            column3 = value3, 
            id=LAST_INSERT_ID(id)
    ");
    $my_id = mysql_insert_id();

无论更新或插入,这将为$ my_id返回正确的值。



 类似资料:
  • 我是spring和hibernate的新手,当我在这里浏览spring事务管理文档时,我尝试实现了一个简单的基于事务的bean,就像上面的示例一样,但是在部署这个bean时,我得到了BeanCreationException。我是否缺少任何配置? 堆栈跟踪: 我有一个控制器,那里的服务是autowired: myProject-servlet.xml: web.xml:

  • 问题内容: 我需要从http://vortaro.us.to/ajax/epo/eng/ +’word’+“ /?callback =?” 获取json数据 。工作示例(信誉不足) 我知道如何用JavaScript来做,但是我需要我的php文件来获取此数据,它必须是服务器端的,谢谢。我是新手,我已经花了整整一天的时间来弄清楚这一点。fopen和fread不起作用, 问题答案: file_get_c

  • 问题内容: 在此示例中,我想将SRC属性转换为变量: 因此,例如-我想要一个变量。重要!src属性将是 dynamic ,因此不能进行硬编码。有什么快速简便的方法可以做到这一点吗? 谢谢! 编辑:图像将是一个巨大的字符串的一部分,基本上是新闻故事的内容。因此,图像只是其中的一部分。 EDIT2:此字符串中将有更多图像,我只想获取第一个的src。这可能吗? 问题答案: 使用类似的HTML解析器,然后

  • 在Eclipse3.6中运行代码时,我在下面的语句中得到了一个。1: 我读过类似问题的帖子,并尝试过答案,但运气不佳,包括: 使用绝对路径 使用各种相对路径 将gif放入各种文件夹(src、bin、lib等) 创建等待灯。gif- 我当前的图像项目路径是LosOMeter- 有什么想法吗? 堆栈跟踪:

  • 我在使用SOAP向服务器提交用户数据时遇到了一些困难。所有我得到的是: 错误获取http正文,没有内容长度,连接关闭或分块数据,我做错了什么? 最后一个响应头:HTTP/1.1 200 OK X-SiteConfiden:jenppb601内容-位置:http://.***.*/general/html/pages/layouts/columncontent.jsp内容-语言:de-DE cont

  • 问题内容: 我很难理解如何在PHP中使用DOMElement对象。我找到了这段代码,但是我不确定它是否适用于我: 基本上,我需要在DOM中搜索特定的,之后需要提取一个非标准的(即我用JS编写并使用的非标准的),以便可以看到它的价值。原因是我需要从中获取一份,而在HTML中则需要基于重定向。如果有人可以解释一下我如何为此目的使用DOMDocument,那将有所帮助。我真的很难理解发生了什么以及如何正