2015-12-16 16 views
5

Tôi cần phải thực hiện truy vấn MySQL bằng cách sử dụng "WHERE IN". Đây là câu hỏi của tôi:"trong đó" truy vấn MySQL trong nodejs

var myQuery = 'SELECT uid FROM ' +tableName+ ' where Gender IN (' + Info.Gender.join() + ')'; 

Nếu tôi in Info.Gender nó sẽ là [ 'Nam', 'Nữ'], như là một chuỗi. nhưng khi truy vấn được thực hiện nó nói

SELECT uid FROM appUsers where Gender IN (Male, Female) 

Nhưng nên là:

SELECT uid FROM appUsers where Gender IN ('Male', 'Female') 

Điều đó có nghĩa nó có Nữ không phải là một chuỗi.

Bất kỳ ý tưởng nào?

+1

'' nơi Gender IN (\ '' + Thông tin .Gender.join ("','") + \ '') '; ' – fuyushimoya

+1

Khi bạn đang tạo SQL trong javascript, bạn nên sử dụng dấu nháy kép để bạn có thể chắc chắn rằng bất kỳ dấu nháy đơn nào cũng sẽ là một phần của SQL và không phải của javascript. – SWeko

Trả lời

13

Bạn nên sử dụng query escaping (với điều kiện là bạn đang sử dụng node-mysql):

var myQuery = 'SELECT uid FROM ?? where Gender IN (?)'; 
connection.query(myQuery, [ tableName, Info.Gender ], ...); 
4

Bạn cần dấu nháy đơn trong truy vấn của bạn:

var myQuery = "SELECT uid FROM " +tableName+ " where Gender IN ('" + Info.Gender.join("','") + "')"; 
+0

cảm ơn bạn! các công trình của nó. –

Các vấn đề liên quan