2013-07-29 5 views
20

नोड-mysql में एक MySQL LIKE कथन से कैसे बचें?नोड MySQL भागने LIKE कथन

'SELECT * FROM card WHERE name LIKE \'%\'hello\'%\'' 

में की

"SELECT * FROM card WHERE name LIKE '%" + connection.escape(req.body.search) + "%'" 

परिणाम पंक्तियों के साथ

जो कुछ एक सिंटैक्स त्रुटि है। यदि मैं

connection.query("SELECT * FROM card WHERE name LIKE '%?%'", req.body.search, function() {}); 

के वैकल्पिक सिंटैक्स का उपयोग उसी वाक्यविन्यास त्रुटि में परिणाम का उपयोग करता हूं। मैंने

connection.query("SELECT * FROM card WHERE name LIKE ?", '%' + req.body.search + '%', function() {}); 

जो भी '%' चिह्न से बचने के लिए समाप्त होता है।

+0

तीसरा उदाहरण की तरह कुछ के साथ सफलता सही है, सही समस्या आप देख रहे हैं क्या है मिला है? ध्यान दें कि यदि आप तारों की खोज करना चाहते हैं जो सचमुच प्रतिशत संकेत हैं जो [trickier] है (http://stackoverflow.com/questions/2106207/escape-sql-like-value-for-postgres-with-psycopg2/2106443#2106443)। – bobince

उत्तर

24
नहीं

यकीन है कि क्यों यह अपने पिछले उदाहरण में % बचने रहा है, क्योंकि यह मेरे लिए ठीक काम करता है:

// lifted from my code: 
var value = 'ee20e966289cd7'; 
connection.query('SELECT * from django_session where session_key like ?', '%' + value + '%', ...) 

// Result: 
[ { session_key: '713ee20e966289cd71b936084a1e613e', ... } ] 

जब मैं ड्राइवर में डीबग किया जाना चालू (mysql.createConnection को तर्क के रूप में debug:true पारित), यह नहीं करता है ' टी बचने प्रतिशत चिह्न:

{ command: 3, 
    sql: 'SELECT * from django_session where session_key like \'%ee20e966289cd7%\'' } 

(यह एकल उद्धरण से बचने करता है, लेकिन है कि केवल प्रदर्शन के लिये है)

([email protected] का प्रयोग करके)

+1

धन्यवाद दोस्तों। मुझे लगता है कि मैं सिर्फ पागल हो रहा हूं, यह काम करता है। – dtsn

9

मैं

"SELECT * FROM card WHERE name LIKE " + connection.escape('%'+req.body.search+'%') 
संबंधित मुद्दे