node.js - node-mysql multiple statement in one query -


मैं nodejs 10.26 + एक्सप्रेस 3.5 + नोड-माइस्क्ल 2.1.1 + MySQL सर्वर संस्करण: 5.6.16

मुझे 4 डेले के पास मिला है और केवल 1 डाटाबेस अनुरोध चाहिए, इसलिए मैं "" "... के साथ हटाएं आदेश दें ... लेकिन यह हमेशा विफल हो जाता है।

  var sql_string =" user_tables से हटाएं जहां नाम = 'Testbase'; "; Sql_string + = "user_tables_structure से हटाएं WHERE parent_table_name = 'Testbase';"; Sql_string + = "user_tables_rules से हटाएं parent_table_name = 'testbase';"; Sql_string + = "user_tables_column से हटाएं WHERE parent_table_name = 'testbase';"; Connection.query (sql_string, फ़ंक्शन (गलती, पंक्तियाँ, फ़ील्ड) {यदि (गलती) गलती हो जाती है; res.send ('true');});   

यह इस त्रुटि को फेंकता है:

  त्रुटि: ER_PARSE_ERROR: आपके SQL सिंटैक्स में एक त्रुटि है; मैनुअल जो कि आपके वाक्यविन्यास के लिए सही सिंटैक्स के पास होता है, उस मैनुअल की जांच करें जो उपयोगकर्ता के डेटासेट के पास 'DELETE FROM user_tables_structure WHERE parent_table_name =' testbase '; पंक्ति 1 पर DELETE FR'   

लेकिन अगर मैं इसे पेस्ट करता हूं PhpMyAdmin में एसक्यूएल यह हमेशा सफल होता है ...

अगर मैं इसे एकल प्रश्न के सफल होने पर भी लिखता हूं।

  connection.query ("user_tables से हटाएं" (यदि (गलती) पंक्तियाँ, खेतों) (यदि (गलती) गलती है, (कनेक्शन), " (गलती, पंक्तियाँ, फ़ील्ड) {if (err) गड़ें; connection.query ("user_tables_column से हटाएं जहां parent_table_name = 'testbase' '' , फ़ंक्शन (गलती, पंक्तियां, फ़ील्ड) {अगर (गलती) गलती हो जाती है; res.send ('true');})}});});});   

मदद के लिए धन्यवाद!

मुझे लगता है कि आप उपयोग कर रहे हैं। कहते हैं:

कई कारणों के लिए सुरक्षा सुरक्षा कारणों से अक्षम है (यह एसक्यूएल इंजेक्शन हमलों के लिए अनुमति देता है अगर मूल्य ठीक से नहीं बचता है)।

एकाधिक कथन
  var कनेक्शन = mysql.createConnection ({manyStatments: true});  

इस सुविधा का उपयोग करने के लिए आपको इसे अपने कनेक्शन के लिए सक्षम करना है;

एक बार सक्षम होने पर, आप एक कथन को एक अर्ध-बृहदान्त्र ; से अलग करके कई कथनों के साथ क्वेरी निष्पादित कर सकते हैं। परिणाम प्रत्येक कथन के लिए एक सरणी होगा।

उदाहरण
  connection.query ('चुनें?; SELECT?', [1, 2], फ़ंक्शन (गलती, परिणाम ) {If (err) फेंकना; // `results` क्वेरी में हर कथन के लिए एक तत्व के साथ एक सरणी है: console.log (परिणाम [0]); // [[1: 1}] console.log ( परिणाम [1]); // [{2: 2}]});   

इसलिए यदि आपने एकाधिक स्टेटमेंट्स को सक्षम किया है, तो आपका पहला कोड कार्य करना चाहिए।

Comments

Popular posts from this blog

c# - passing input text from view to contoller with FacebookContext using Facebook app -

ios - Does Core Data autoupdate a many to many relationship on saving -

Calling a C++ function from C# by passing a string with variable size to it -