Mysql: Utiliser `?` Avec des tranches

Créé le 22 nov. 2013  ·  5Commentaires  ·  Source: go-sql-driver/mysql

Comme ça:
SÉLECTIONNEZ * DANS LA TABLE O UN IN (?)

quand j'utilise l'interface de requête db.Query (sSql, vArgs ...), comment entrer para?
comme une chaîne comme celle-ci: "a, b, c"?
ou comme un tableau comme celui-ci: [a, b, c]?
ou comme une tranche comme celle-ci: ["a", "b", "c"]?

tout cela a échoué, pleure ...

duplicate question working as intended

Commentaire le plus utile

Ceci est un double de # 107.

Cela ne fonctionnera pas.

Un ? ne peut pas correspondre à quoi que ce soit modifiant le plan d'exécution de l'instruction après sa préparation.
Voici le cas pour lequel il ne peut pas être utilisé (peut être incomplet):

  • plus d'une valeur (tranches, cartes, ...) : arrow_backward: c'est votre erreur ici
  • Mots clés SQL
  • Identificateurs SQL (noms de schéma, de table et de colonne)
  • ordre de tri

Vous devrez réécrire votre requête. Si vous avez toujours 3 arguments, faites-le
SELECT * FROM TABLE WHERE A IN (?, ?, ?) .
Sinon, vous devez créer la requête en fonction du nombre d'éléments de tranche ou rechercher une autre approche.

Tous les 5 commentaires

Ceci est un double de # 107.

Cela ne fonctionnera pas.

Un ? ne peut pas correspondre à quoi que ce soit modifiant le plan d'exécution de l'instruction après sa préparation.
Voici le cas pour lequel il ne peut pas être utilisé (peut être incomplet):

  • plus d'une valeur (tranches, cartes, ...) : arrow_backward: c'est votre erreur ici
  • Mots clés SQL
  • Identificateurs SQL (noms de schéma, de table et de colonne)
  • ordre de tri

Vous devrez réécrire votre requête. Si vous avez toujours 3 arguments, faites-le
SELECT * FROM TABLE WHERE A IN (?, ?, ?) .
Sinon, vous devez créer la requête en fonction du nombre d'éléments de tranche ou rechercher une autre approche.

Salut Arnehormann merci pour votre réponse, si vous utilisez comme ceci "SELECT * FROM TABLE WHERE A IN (?,?,?)", Je dois savoir combien de para; mais généralement je ne sais pas combien de para il y a, donc je veux utiliser dans un para d'entrée de chaîne comme ceci: SELECT * FROM TABLE WHERE A IN (?), et requête à partir d'une chaîne ou [] string ext.

Merci
br pour toi.

@ zhaohui-kevin, sauf si quelque chose me manque. Vous savez toujours combien il y a de paramètres car vous devez soit passer des arguments individuels à Query() soit développer une tranche avec s... alors construisez simplement la requête avec le nombre correct d'espaces réservés en fonction de cette connaissance http : //play.golang.org/p/mA2KwolV-n

En lisant ceci, je ne sais pas si vous savez quoi faire maintenant ou non.
Si vous ne connaissez pas le nombre de paramètres à l'avance, vous ne pouvez pas utiliser ? .

Vous devez donc faire quelque chose comme

if len(inValues) > 0 {
    query = "SELECT * FROM " + table + " WHERE " + column +
        " IN (?" + strings.Repeat(",?", len(inValues)-1)) + ")"
    ....
}

EDIT Merci @DisposaBoy , cela semble plutôt familier: +1:

Je sais comment utiliser comme ça, mais ce n'est pas mon esprit :) De toute façon merci beaucoup.

À 2013-11-22 19:06:15, "Arne Hormann" [email protected] a écrit:

En lisant ceci, je ne sais pas si vous savez quoi faire maintenant ou non.
Si vous ne connaissez pas le nombre de paramètres à l'avance, vous ne pouvez pas utiliser?.

Vous devez donc faire quelque chose comme

iflen (inValues)> 0 {query = "SELECT * FROM" + table + "WHERE" + colonne + "IN (?" + strings.Repeat (",?", len (inValues) -1)) + ")" .. ..}

-
Répondez directement à cet e-mail ou affichez-le sur GitHub.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

BSick7 picture BSick7  ·  8Commentaires

AlekSi picture AlekSi  ·  3Commentaires

lunemec picture lunemec  ·  7Commentaires

xuewindy picture xuewindy  ·  3Commentaires

pedromorgan picture pedromorgan  ·  6Commentaires