Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

नोड.जेएस-एसक्यूएल में पैरामीटर बाध्य करके गतिशील क्वेरी कैसे बनाएं?

आप वास्तव में अच्छी शुरुआत कर रहे हैं, लेकिन हो सकता है कि आप इसे थोड़ा अधिक सोच रहे हों। चाल प्लेसहोल्डर्स के साथ एक क्वेरी बनाने की है (? ) एक स्ट्रिंग के रूप में और साथ ही मूल्यों की एक सरणी बनाएँ।

तो, अगर आपके पास params = { name: 'foo', age: 40 } . है , आप निम्न ऑब्जेक्ट बनाना चाहते हैं:

where = 'name LIKE ? AND age = ?';
values = [ '%foo%', 40 ];

अगर आपके पास केवल { name: 'foo' } . है , आप इसके बजाय इनका निर्माण करेंगे:

where = 'name LIKE ?';
values = [ '%foo%' ];

किसी भी तरह से, आप उन वस्तुओं को सीधे query . में उपयोग कर सकते हैं विधि, यानी:

var sql = 'SELECT * FROM table WHERE ' + where;
connection.query(sql, values, function...);

फिर हम उन वस्तुओं का निर्माण कैसे करते हैं? वास्तव में, कोड वास्तव में आपके buildQuery . के समान है कार्य, लेकिन कम जटिल।

function buildConditions(params) {
  var conditions = [];
  var values = [];
  var conditionsStr;

  if (typeof params.name !== 'undefined') {
    conditions.push("name LIKE ?");
    values.push("%" + params.name + "%");
  }

  if (typeof params.age !== 'undefined') {
    conditions.push("age = ?");
    values.push(parseInt(params.age));
  }

  return {
    where: conditions.length ?
             conditions.join(' AND ') : '1',
    values: values
  };
}

var conditions = buildConditions(params);
var sql = 'SELECT * FROM table WHERE ' + conditions.where;

connection.query(sql, conditions.values, function(err, results) {
  // do things
});



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL को UTF-8 को ठीक से कैसे हैंडल करें

  2. MySQL में, क्या मैं एक ही तालिका में सम्मिलित करने के लिए एक पंक्ति की प्रतिलिपि बना सकता हूँ?

  3. टेबल को लॉक किए बिना टेबल बदलें?

  4. चयन में डालें और एकल क्वेरी में अपडेट करें

  5. त्रुटि 1045 (28000):उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करके:हाँ)