Mysql
 sql >> Base de données >  >> RDS >> Mysql

Golang MySQL interrogeant un nombre indéfini d'arguments à l'aide de l'opérateur IN

Stmt.Query() a un paramètre variadique :

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

Cela signifie que vous pouvez utiliser les points de suspension ... pour passer une valeur de tranche comme valeur du paramètre variadique, mais cette tranche doit être de type []interface{} , par exemple :

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

// ...

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

Comme alternative, vous pouvez pré-construire la requête SQL et l'exécuter sans passer d'arguments de requête, pour un exemple voir Clause Go et IN dans Postgres .