Interrogation de MySQL avec sqlx et une tranche de valeurs
Lors de l'interrogation d'une table de base de données pour récupérer des données en fonction des valeurs contenues dans une tranche, les utilisateurs peut rencontrer des erreurs comme celle illustrée ci-dessous :
sql: converting Exec argument #0's type: unsupported type []int, a slice quotes []
Cette erreur indique que la requête attend un type spécifique pour le paramètre d'entrée, mais à la place, il reçoit une tranche, qui n'est pas un type pris en charge.
Pour résoudre ce problème, sqlx fournit une fonction d'assistance pratique appelée In(). Cette fonction prend la tranche de valeurs et la chaîne de requête comme arguments et renvoie une requête modifiée avec le ? bindvar. Cette requête peut ensuite être renvoyée vers le backend de base de données approprié à l'aide de la méthode Rebind().
Voici un exemple d'utilisation de In() :
var qids []int // fills qids on query dynamically query, args, err := sqlx.In("SELECT * FROM quote WHERE qid IN (?)", qids) if err != nil { log.Fatal(err) } // sqlx.In returns queries with the `?` bindvar, we can rebind it for our backend // query = database.SQL.Rebind(query) // database.SQL should be a *sqlx.DB err = database.SQL.Select("es, query, args...) if err != nil { log.Fatal(err) }
Le code ci-dessus récupère les valeurs à partir de la table « quote » où le champ « qid » correspond à l'une des valeurs de la tranche qids.
Pour plus de références et d'exemples, visitez le site officiel Documentation sqlx sur http://jmoiron.github.io/sqlx/.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!