nicht arbeiten gehen Ich habe eine MySQL-Datenbank mit einem Wert darin, ein String: "192.168.0.1"Else Zustand scheint in
Hier ist mein Code:
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:[email protected](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")
}
Als ich "'192.168.0.1'"
setzen in ip
es funktioniert und zeigt wie erwartet.
Aber wenn ich "'192.168.0.2'"
in ip
setzen, wird die Else-Anweisung nicht ausgeführt und es wird nur beendet.
Es nicht gedruckt "insert2"
Beste Schätzung ist, dass Sie immer noch in der if-Block dann sind. Hast du die Anzahl der Zeilen überprüft, die du zurückbekommst? –
Überprüfen Sie den Fehlerwert, der von 'db.Query' zurückgegeben wird. Es ist oft der Fall, dass Funktionen/Methoden im Fehlerfall ein Null-Wert-Objekt (oder einen Zeiger darauf) zurückgeben. In der Tat wird dies als gute Praxis angesehen. – abhink
@ william.taylor.09 dam du hast recht danke – user462794