J'essaie de transmettre des éventail de villes à la clause de la clause, mais semble inversé des virgules sont supprimés lors de la préparation de la requête
Voici le code P>
SELECT* FROM cities WHERE city IN (Moscow, Paris);
3 Réponses :
Essayez ceci, il fonctionnera résultat: - p>
L'utilisation d'un constructeur de requête est une méthode préférable mais une solution possible si vous avez un tableau long:
let stringifiedValues = JSON.stringify(city).replace(/\[|\]/g,'');
let sql = `SELECT * FROM cities WHERE city IN (${stringifiedValues})`;
C'est une solution intéressante pour cette tâche! Si vous n'aimez pas Regexp, vous pouvez utiliser json.stringify (ville) .Slice (1, -1) code>
moscow code> => 'moscou' code> li> li>
- Utilisez le Rejoindre Pour rassembler les éléments transformés en une chaîne em>. Le délimiteur peut être spécifié comme un argument comme celui-ci
array.join (',') code> li>
- Utilisez littéraux de modèle (interpolation de chaîne) Pour injecter votre chaîne dans votre question em>. Comme ce
$ {str} code> li>
p>
const city = ["Moscow", "Paris"];
const injectedString = city.map(c => `'${c}'`).join(', ');
let sql = `SELECT * FROM cities WHERE city IN (${injectedString})`;
console.log(sql);
Essayez avec une interpolation de chaîne.
Vous ne devriez pas concaténer un tableau avec une chaîne en utilisant
+ code>. Essayez avecrejoindre code> sur le tableau au lieu de construire votre chaîne d'abordPouvez-vous dire quel paquet utilisez-vous pour vous connecter à MySQL?
Utilisez Orm ou Requête Builder pour interroger.
Dupliqué possible de élément de tableau JavaScript à la chaîne