2016-08-01 10 views
1

Ich verwende mysqljs\mysql in einer Node-Anwendung und ich habe einige Probleme bei der Ausführung von Anweisungen mit 'in' -Klauseln.Ausführen von 'where in' Anweisung mit Mysqljs mysql

Unter Paramater Flucht heißt es in der Dokumentation, dass:

Arrays in der Liste eingeschaltet sind, zum Beispiel [ 'A', 'b'] verwandelt sich in 'a', 'b'

Escaping query values

Aber wenn ich so etwas wie dies versuchen:

var sql = "SELECT * FROM table WHERE name IN (?)"; 
var params = ['a', 'b', 'c']; 
console.log(mysql.format(sql, params)); 

ich eine Abfrage nur enthält, der erste Wert des Feldes:

"SELECT * FROM table WHERE name IN ('a')" 
+0

Wenn das Dokument nicht korrekt ist (nie verwendet), wäre eine Alternative das Array zu verbinden, 'params.join (',')'. Aber das sollte nur getan werden, wenn dies nicht möglich ist mit mysqljs – AxelH

Antwort

2

diese Versuchen:

var params = [['a', 'b', 'c']]; 
+0

Super! Danke Ebrahim. Ich werde akzeptieren, wenn es in ein paar Minuten erlaubt ist. – Stromgren

+1

@Stromgren, Lesen der SqlString-Code, finde ich, dass die Funktion warten auf ein Array, um jede Zelle auf jedem?, Das Dokument sagen, dass, wenn ** eine Zelle dieses Array ** ein Array ist, wird es wie gewünscht konvertiert werden . Deshalb funktioniert diese Antwort. Nur für Infos;) – AxelH

+0

Danke @AxelH .. – Stromgren

0

Wenn nichts anderes funktioniert, könnten Sie auch versuchen, die Listenelemente einzeln auszudrucken, wenn Sie die Anweisung formulieren (dies sollte automatisiert werden). Die resultierende vorbereitete Anweisung würde dann wie folgt aussehen: