2016-08-01 170 views
1

我在Node應用程序中使用mysqljs\mysql,我遇到了一些使用'in'子句執行語句的問題。使用Mysqljs mysql執行'where in'語句

在paramater逸出,文檔指出:

陣列都變成列表中,例如[ '一', '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

如果文檔不正確(從未使用過),另一種方法是加入數組'params.join(',')'。但是這應該只在mysqljs不可能的情況下才能完成 – AxelH

回答

2

嘗試這種情況:

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

太棒了!謝謝Ebrahim。我會在幾分鐘內允許的。 – Stromgren

+1

@Stromgren,閱讀SqlString代碼,我發現該函數等待一個數組將每個單元格放在每個?,該文檔說,如果**這個數組的單元格**是一個數組,它將被轉換爲你想要的。這就是爲什麼這個迴應起作用。僅供參考;) – AxelH

+0

謝謝@AxelH .. – Stromgren

0

如果沒有其他的工作,你也可以嘗試在編寫語句時單獨寫出列表項(這應該是自動的)。因此,準備好的語句如下所示:

"SELECT * FROM table WHERE name IN (?, ?, ?)"