Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Golang MySQL fragt eine undefinierte Menge an Argumenten mit dem IN-Operator ab

Stmt.Query() hat einen variadischen Parameter:

func (s *Stmt) Query(args ...interface{}) (*Rows, error)

Das bedeutet, dass Sie die Auslassungspunkte ... verwenden können um einen Slice-Wert als Wert des variadischen Parameters zu übergeben, aber dieses Slice muss vom Typ []interface{} sein , z. B.:

var args []interface{}
for _, v := range r.Form["type"] {
    t, _ := strconv.Atoi(v)
    args = append(args, t)
}

// ...

rows, err := stmt.Query(args...)

Als Alternative könnten Sie die SQL-Abfrage vorab erstellen und ausführen, ohne Abfrageargumente zu übergeben, ein Beispiel finden Sie unter Go- und IN-Klausel in Postgres .