2016-08-01 4 views
1

私はノードアプリケーションでmysqljs\mysqlを使用していますが、 'in'句を含むステートメントの実行にはいくつか問題があります。Mysqljs mysqlで 'where in'ステートメントを実行

配列は、例えば、リストになっていますのparamaterエスケープの下では、ドキュメントがあること

を述べて[ 'A'、 'B']は 'A'、 'B'

Escaping query values

に変わるが、私はこのような何かしようとすると:

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

を私だけ含むクエリを取得します配列の最初の値:

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

docが正しくない(使用されていない)場合は、 'params.join( '、')'という配列に参加することもできます。しかし、これはmysqljsで可能でない場合にのみ実行する必要があります – AxelH

答えて

2

はこれを試してみてください:

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

恐ろしいです!ありがとうエブラヒム。私はそれが数分で許されるとき受け入れます。 – Stromgren

+1

@Stromgren、SqlStringコードを読んで、私はこの関数が配列ごとに各セルを置くために配列を待つことを発見しました。**この配列**のセルが配列の場合は、必要に応じて変換されます。これがこの反応が働いている理由です。ちょうど情報;) – AxelH

+0

ありがとう@AxelH .. – Stromgren

0

他に何も問題がなければ、文を定式化するときに個別にリスト項目を書き出すこともできます(これは自動化する必要があります)。その結果、準備された文は次のようになります。

"SELECT * FROM table WHERE name IN (?, ?, ?)" 
関連する問題