2015-12-16 17 views
5

Devo eseguire query MySQL utilizzando "WHERE IN". Questa è la mia domanda:"where in" Query MySQL in nodejs

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

se stampo Info.Gender sarà [ 'Male', 'Femmina'], come una stringa. ma quando la query è fatto si dice

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

Ma dovrebbe essere:

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

Ciò significa che ci vuole la femmina non come una stringa.

Qualche idea?

+1

'' dove Genere IN (\ '' + Info .Gender.join ("','") + \ '') '; ' – fuyushimoya

+1

Quando stai generando SQL in javascript, è intelligente usare sempre virgolette doppie, in modo da poter essere sicuro che ogni singola citazione faccia parte di l'SQL e non del javascript. – SWeko

risposta

13

Si dovrebbe usare query escaping (a patto che si sta utilizzando node-mysql):

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

È necessario apici nella query:

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

grazie! le sue opere. –