第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 db.Query 中使用 bindvars 獲得不同的結果

在 db.Query 中使用 bindvars 獲得不同的結果

Go
湖上湖 2022-12-26 16:39:33
去版本:18.3 github.com/go-sql-driver/mysql v1.6.0當查詢字符串是 db.Query("SELECT * FROM logs ORDER BY log_id DESC LIMIT 1,3 ")如果 log_id == 8b, _ := rawValue.([]byte)下面是vscode的調試信息,b是正確的b: []uint8 len:1,cap 1,[56] ; 字符串():“8”當我使用 db.Query("SELECT * FROM logs ORDER BY log_id DESC LIMIT ?,? ", 1,3)如果 log_id == 8在b, _ := rawValue.([]byte)信息是b: []uint8 only :0 ,cap:0 ,nil原始值8不是56和 user(string) 在兩者中都運行良好。我的 SQL 架構CREATE TABLE logs (    `log_id` INT(6) NOT NULL AUTO_INCREMENT,   `user` VARCHAR(10),  PRIMARY KEY(log_id)      );代碼    db, _:= sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/log")    rows, _ := db.Query("SELECT * FROM logs ORDER BY log_id DESC LIMIT ?,? ", 1, 3)    col, _ := rows.Columns()    defer rows.Close()    count := len(col)    values := make([]interface{}, count)    for i := range values {        var ii interface{}        values[i] = &ii    }    ret := make([]map[string]interface{}, 0)    fmt.Println("Reading data:")    for rows.Next() {        _ = rows.Scan(values...)        m := make(map[string]interface{}, 0)        for i, colname := range col {            rawValue := *(values[i].(*interface{}))            b, _ := rawValue.([]byte)            if colname == "log_id" {                v, _ := strconv.Atoi(string(b))                m[colname] = v            } else if colname == "log_msg_id" {                v, _ := strconv.Atoi(string(b))                m[colname] = v            } else {                v := string(b)                m[colname] = v            }        }
查看完整描述

1 回答

?
偶然的你

TA貢獻1841條經(jīng)驗 獲得超3個贊

為什么不把值掃描成這樣的結構:


type Log struct {

        ID   int64

        Name string

    }


    db, _ := sql.Open("mysql", "root:passwd@tcp(127.0.0.1:3306)/log")

    rows, err := db.Query("SELECT * FROM logs ORDER BY log_id DESC LIMIT ?,? ", 1, 3)

    if err != nil {

        fmt.Println(err)

    }


    defer rows.Close()

    var values []Log


    fmt.Println("Reading data:")

    for rows.Next() {

        var log Log

        err = rows.Scan(&log.ID, &log.Name)

        if err != nil {

            fmt.Println(err)

            continue // you need to handle error

        }


        values = append(values, log)

    }

    fmt.Println(values)


查看完整回答
反對 回復 2022-12-26
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號