猿问

如何插入多行

我实际上是 Go 的新手,所以想知道像这样插入数据的最佳方式


{

    "moduleId":"M101",

    "topicId":["tt","ee"]

}

在 MySQL 数据库中使用 Go


type 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 中。


皈依舞
浏览 113回答 1
1回答

慕神8447489

您不能简单地将数组插入数据库。相反,您应该循环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;
随时随地看视频慕课网APP

相关分类

Go
我要回答