【问题标题】:MYsql - Get insert id - sqlMYsql - 获取插入ID - sql
【发布时间】:2016-01-24 13:10:50
【问题描述】:

我想执行一个查询,将插入 ID 插入其中一个列

我想知道如何获取插入 ID 我读了这个答案Get inserted id from mysql insert procedure 但是它谈论如何在查询后获取插入ID,并且我想在查询时获取它

我尝试做:

    $stmt = $db->prepare("INSERT INTO `files` (`name`, `fname`) VALUES (?, LAST_INSERT_ID() + ?)") or die($db->error);
    $stmt->bind_param('ss', $name, $uniqid);

但它的剂量工作,我总是得到 56,而且 contcat 剂量工作,我需要做什么?

【问题讨论】:

标签: mysql sql


【解决方案1】:

在插入后保存更简单更好。在实际插入发生之前,您也极不可能获得正确的 id。

最可靠的方法是使用事务。

  • 开始交易
  • 插入行
  • 更新插入 ID
  • 提交事务

【讨论】:

  • 为什么在一个查询中完成它如此重要?运行两个查询是可以的。
【解决方案2】:

+ 不是 MySQL 中的字符串连接运算符。使用CONCAT(string1, string2, ...)

在有线协议中,mysql 在每次查询后,主动向客户端返回与LAST_INSERT_ID() 相同的值,并且大多数库都提供了访问最近返回值的方法。你没有提到,但是看起来你在php中使用了mysqli,所以你正在寻找这个:

$last_id = $db->insert_id;

这看起来好像要发送第二个查询来向数据库询问 id,但事实并非如此。它正在返回之前存储的值。

http://php.net/manual/en/mysqli.insert-id.php

【讨论】:

    猜你喜欢
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2010-10-28
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多