mysql - 如何从 sqlx 获取最后插入的行的 ID?

标签 mysql sql go sql-insert sqlx

我想取回使用 sqlx 插入 MySql 数据库的最后一篇文章的 ID:

resultPost, err := shared.Dbmap.Exec("INSERT INTO post (user_id, description, link) VALUES (?, ?, ?)", userID, title, destPath)
if err != nil {
    log.Println(err)
    c.JSON(
        http.StatusInternalServerError,
        gin.H{"error": "internal server error"})
}

fmt.Println("resultPost is:", resultPost)

问题是 resultPost 被打印为一个对象:

resultPost is: {0xc420242000 0xc4202403a0}

所以我想知道提取刚刚插入的行的 id 的正确方法是什么?

最佳答案

Exec 的返回值,Result并不意味着可以直接访问——它是一个具有两种调用方法的对象,其中一种是 LastInsertId()

lastId, err := resultPost.LastInsertId()
if err != nil {
    panic(err)
}
fmt.Println("LastInsertId: ", lastId)

关于mysql - 如何从 sqlx 获取最后插入的行的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53990799/

相关文章:

event-handling - 如何使用 gtk.go.Connect() 设置接受参数的插槽(事件处理程序)?

http - 返回错误之前如何收集尽可能多的信息

MYSQL 通配符搜索 - 排序结果问题

mysql - bash: 从 mysql 查询中输出\n\t 个字符

sql - 如何找到分组的 SQL 中位数

sql - 挑战,如何实现六度分离的算法?

javascript - 通过ajax向数据库发出持续请求的有效方法是什么?

java - 如何修复 java.sql.SQLException : Server is running in --secure-auth mode, 但 'user' @'host' 有旧格式的密码; (...)?

sql - 按连接表数据排序的复杂 SQL 查询

go - 不能在赋值中使用 &ingredients (type *[]foo.bar) 作为 type []*foo.bar