sql server - सुरक्षित SQL नामों का सुरक्षित उपयोग कैसे करें?




sql-server cakephp (2)

मैं डेटा स्रोत सर्वर के रूप में sqlserver का उपयोग करके Cakephp 3 का उपयोग कर रहा हूं। मुझे यकीन है कि मेरे डेटाबेस कनेक्शन के साथ कोई समस्या नहीं है .. जैसा कि home.ctp संकेत देता है कि मैं अपने डेटाबेस से जुड़ा हुआ हूं .. और मैं अपनी टेबल बनाने के लिए माइग्रेशन प्लगइन का उपयोग कर रहा हूं .. ऐसा लगता है कि साथ काम करने में कोई समस्या नहीं है ये उपकरण। लेकिन मेरे MVC को बेक करने के बाद, मुझे केवल त्रुटियों से भरा पृष्ठ मिला।

उदाहरण के लिए $ बिन \ केक सभी परीक्षण सेंकना

मुझे कोई त्रुटि नहीं मिली और MVC इसके विशिष्ट फ़ोल्डर, testController.php, testTable, आदि में हैं।

और ब्राउज़र में लोकलहोस्ट: 8765 \ परीक्षण

लेकिन मुझे जो भी मिला है वह विभिन्न त्रुटियों का पृष्ठ है

Error: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword 'desc'.

SELECT * FROM (SELECT Tests.id AS [Tests__id], Tests.desc AS [Tests__desc], (ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS [_cake_page_rownum_] FROM tests Tests) _cake_paging_ WHERE _cake_paging_._cake_page_rownum_ <= :c0

और बाईं ओर अधिक त्रुटियां।

मुझे लगता है कि यह गलत प्रश्नों या सेंक द्वारा उत्पन्न प्रश्नों के नियंत्रकों के कारण है, केवल mysql के लिए है। मैं सिर्फ यह जानना चाहता हूं कि इससे कैसे निपटा जाए। क्या कोई सेटिंग है जिसे मैं करना भूल गया हूं? कृपया सलाह दें। मैं Cakephp के लिए नया हूं, और अंग्रेजी मेरी मूल भाषा नहीं है, क्षमा करें यदि मैं अपने प्रश्न को ठीक से नहीं समझा सकता हूं। अग्रिम में धन्यवाद।


इसे इस्तेमाल करो :

SELECT * FROM (SELECT Tests.id AS [Tests__id], Tests.[desc] AS [Tests__desc], 
(ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS [_cake_page_rownum_] FROM tests Tests) _cake_paging_
WHERE _cake_paging_._cake_page_rownum_ <= :c0

यदि आप किसी कीवर्ड का उपयोग करते हैं, तो इसे स्क्वायर ब्रेसेस में उपयोग करें [ ]


जैसा कि टिप्पणियों में विशाल गज्जर द्वारा पहले ही उल्लेख किया गया है, आप अपने कॉलम के नाम के लिए आरक्षित कीवर्ड desc का उपयोग कर रहे हैं, इसलिए त्रुटि, यह गलत नहीं है, यह आपका है।

ऐसे आरक्षित शब्दों का उपयोग करने में सक्षम होने के लिए, कॉलम नाम को ठीक से उद्धृत करने की आवश्यकता है, हालांकि CakePHP 3 डिफ़ॉल्ट रूप से अब ऑटो-उद्धरण नहीं करता है, क्योंकि यह एक महंगा ऑपरेशन है।

यदि आप आरक्षित शब्दों का उपयोग करने पर जोर देते हैं, तो अपने app.php config में quoteIdentifiers विकल्प के माध्यम से पहचान करने वाले को सक्षम करें, या मैन्युअल रूप से autoQuoting() ( enableAutoQuoting() 3.4 के रूप में DB ड्राइवर की विधि का उपयोग करके इसे सक्षम करें।

यह सभी देखें






cakephp-bake