gpt4 book ai didi

mysql - 其他情况似乎无法正常工作

转载 作者:IT王子 更新时间:2023-10-29 02:32:30 27 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其中有一个值,一个字符串:“192.168.0.1”

这是我的代码:

package main

import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)

func checkErr(err error) {
if err != nil {
panic(err)
}
}
func main() {
db, err := sql.Open("mysql", "be:me@tcp(127.0.0.1:3306)/ipdb?charset=utf8")
checkErr(err)

ip := "'192.168.0.1'"
rows, err := db.Query("SELECT * FROM Ip_ipdata WHERE ipHost=" + ip)
fmt.Println("insert")
if rows != nil {
for rows.Next() {
var id int
var ip string
err = rows.Scan(&id, &ip)
checkErr(err)
fmt.Println(id)
fmt.Println(ip)
}

} else {
fmt.Println("insert2")
stmt, err2 := db.Prepare("INSERT Ip_ipdata SET ipHost=2")
checkErr(err2)

_, err3 := stmt.Exec(ip)
checkErr(err3)
}
fmt.Println("end")
}

当我将 "'192.168.0.1'" 放入 ip 时,它会按预期工作并显示。

但是当我将 "'192.168.0.2'" 放入 ip 时,else 语句不会运行,它只是退出。

它没有打印“insert2”

screenshot 1 screenshot 2

最佳答案

你应该习惯使用'?' sql 中的占位符以允许正确转义并防止任何潜在的 SQL 注入(inject)攻击。

在使用返回值之前,您应该始终检查 Go 中的错误。

ip := "192.168.0.1"
rows, err := db.Query("SELECT * FROM Ip_ipdata WHERE ipHost=?", ip)
if err != nil {
// handle error
}
// this will ensure that the DB connection gets put back into the pool
defer rows.Close()

for rows.Next() {
// scan here
}

关于mysql - 其他情况似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44637932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com