【问题标题】:How to get back the last inserted row mysql如何取回最后插入的行mysql
【发布时间】:2013-01-03 08:08:44
【问题描述】:

好吧,我一直在寻找这个,但并没有真正找到我的问题的答案。

目前我得到了这个语法:

$sql = sprintf("INSERT INTO users (***, ***, ***, ***) VALUES ('%s', '%s', '%s', %d)", mysql_real_escape_string($***), mysql_real_escape_string($***), mysql_real_escape_string($***), $***);
if(!mysql_query($sql)) { die('error: '.mysql_error()); }
return mysql_insert_id();

这很好用,当我想从最后插入的行中取回一个项目时,我可以使用我得到的 id 进行另一个查询。

但我的问题是,是否可以一次归还整行?这样我就不必运行另一个查询来从最后插入的行中获取项目。

【问题讨论】:

  • 您想要一个函数来返回您刚刚插入的记录中的所有值?如果是这样,我不知道有什么内置的东西可以做到这一点。
  • 是的,这正是我想要的。
  • 您可以变得聪明并创建一个存储过程或函数来为您执行此操作,但是除了您已经使用的内容之外,没有任何内置功能可以帮助您...跨度>
  • 是的,我也想到了这一点,在发布之前存储变量并在我的脚本中进一步使用它。有点编码,但这将有助于服务器加载。谢谢!

标签: php mysql sql insert


【解决方案1】:

不, 没有类似的实现。

我认为这是对的,因为insert syntax 更复杂(例如参见on duplicate key、insert ignore),并且在某些情况下,预期回报可能不明确

【讨论】:

  • 我就是这么想的,也是害怕的。为这样一个简单的任务运行 2 个查询有点奇怪。
  • @Augus - 我不知道你说的是否像 chumkiu 所说的那么简单。它必须动态返回结果集(所有适用的字段),而不是单个整数值(ID)。
猜你喜欢
  • 1970-01-01
  • 2019-11-21
  • 2017-10-14
  • 2017-10-22
  • 1970-01-01
  • 2011-06-01
  • 2011-11-06
  • 2014-09-06
  • 1970-01-01
相关资源
最近更新 更多