为了账号安全,请及时绑定邮箱和手机立即绑定

如何插入多行

如何插入多行

Go
皈依舞 2023-06-01 10:04:51
我实际上是 Go 的新手,所以想知道像这样插入数据的最佳方式{    "moduleId":"M101",    "topicId":["tt","ee"]}在 MySQL 数据库中使用 Gotype TopicModule struct {    ModuleId string   `json:"moduleId" bson:"moduleId" form:"moduleId"`    TopicId  []string `json:"topicId" bson:"topicId" form:"topicId"`    AddedBy  string   `json:"addedBy" bson:"addedBy" form:"addedBy"`}func AddTopicModuleHandler(ctx iris.Context) {    topicmodule := new(TopicModule)    if err := ctx.ReadJSON(topicmodule); err != nil {        panic(err)        ctx.StatusCode(400)        return    }    log.Println(topicmodule.TopicId)    code, created := AddTopicModule(*topicmodule)    if created {        ctx.JSON(topicmodule)        ctx.Redirect("/api/module/"+code, iris.StatusCreated)    }}func AddTopicModule(atm TopicModule) (string, bool) {    log.Println("the topic is ", atm.TopicId)    db := DatabaseAccess()    tx, _ := db.Begin()    stmt, err := tx.Prepare("insert into ModuleTopic(module_id, topic_id, added_by) Values(?,?,?) ")    res, err := stmt.Exec(atm.ModuleId, "Ricky")    res1, err := stmt.Exec(atm.ModuleId, "Ric")    if err != nil {        tx.Rollback()    }    tx.Commit()    log.Println(res, res1)    return "aa", true}预期的结果是将 JSON 数组添加到 MySQL 中。
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

您不能简单地将数组插入数据库。相反,您应该循环TopicId并一一插入


func AddTopicModule(atm TopicModule) (string, bool) {

    log.Println("the topic is ", atm.TopicId)

    db := DatabaseAccess()

    tx, _ := db.Begin()

    for _, value = range(atm.TopicId){

        stmt, err := tx.Prepare("insert into ModuleTopic(module_id, topic_id, added_by) Values(?,?,?) ")

        if err != nil {

            return "", false

        }

        res, err := stmt.Exec(atm.ModuleId, value, "Harsh")

        if err != nil {

            tx.Rollback()

            return "", false

        }

        tx.Commit()

    }

    return "aa", true

}

这将在数据库中为您提供的 JSON 创建 2 个条目。


|---------------------|------------------|------------------|

|      module_id      |     topic_id     |     added_by     |

|---------------------|------------------|------------------|

|          M101       |         tt       |     Harsh        |

|---------------------|------------------|------------------|

|          M101       |         ee       |     Harsh        |

|---------------------|------------------|------------------|

要获取它们,只需查询您的数据库:


SELECT * FROM ModuleTopic WHERE module_id = M101;


查看完整回答
反对 回复 2023-06-01
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信