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

SQLSTATE [42000]:सिंटैक्स त्रुटि या पहुँच उल्लंघन:1064

यही त्रुटि उत्पन्न कर रहा है:

$this->data->query('CREATE TABLE $this->subdomain');
$this->data->bind(':subdomain', $this->subdomain);

जैसा कि माइकल बर्कोव्स्की और एंड्रयूसी ने टिप्पणियों में उल्लेख किया है, आप मूल्य को :subdomain से नहीं बांध सकते प्लेसहोल्डर क्योंकि इसे क्वेरी में नोट नहीं किया गया है और भले ही यह पीडीओ प्लेसहोल्डर्स का उपयोग केवल मानों के लिए किया जा सकता है, डेटाबेस, टेबल या कॉलम नामों के लिए नहीं

यदि आप चाहते हैं कि इस प्रकार की SQL क्वेरी गतिशील रूप से बनाई जाए तो आपको बैकटिक उद्धरणों में डेटाबेस, तालिका या स्तंभ नामों को संलग्न करना होगा (यदि आपके कॉलम और नामों में SQL आरक्षित कीवर्ड हैं जो क्वेरी को तोड़ सकते हैं) और एस्केप वैल्यू जो रखे गए हैं, लेकिन आप MySQLi . का उपयोग नहीं कर सकते हैं उसके लिए यदि पहले से ही PDO . का उपयोग कर रहे हैं ।

चूंकि पीडीओ real_escape_string() के साथ नहीं आता है विधि जो बस यही करेगी, और व्यवहार में इस तरह के मूल्यों से बचने की आवश्यकता नहीं है (जब तक कि आपके पास वास्तव में Ye'name जैसे नाम वाले कॉलम न हों। जो पूरी तरह से बेवकूफ IMHO है), इतना आसान फ़िल्टर preg_match() . का उपयोग करके या preg_replace() काफी अच्छा है:

if (preg_match('/^[\w_]+$/i', $this->subdomain)) {
    // note the ` (backtick), and using " (double quotes):
    $this->data->query("CREATE TABLE `{$this->subdomain}`"); 
} else {
    // throw exception or error, do not continue with creating table
}

' . का उपयोग करने के कुछ उदाहरण (एकल उद्धरण - एपॉस्ट्रॉफ़ी) " . के विरुद्ध (दोहरे उद्धरण) PHP में तार:

$a = 1;
$b = 2;
echo '$a + $b'; // outputs: $a + $b
echo "$a + $b"; // outputs: 1 + 2
$c = array(5, 10);
echo '\$c[0] = {$c[0]}'; // outputs: \$c[0] = {$c[0]}
echo "\$c[0] = {$c[0]}"; // outputs: $c[0] = 5

{} डबल कोट्स के अंदर स्ट्रिंग का उपयोग सरणियों और ऑब्जेक्ट प्रॉपर्टी एक्सेस के लिए किया जाता है और इसे नियमित चर के आसपास इस्तेमाल किया जा सकता है।
$ से बचना डबल कोट्स में \$ . द्वारा किया जाता है अन्यथा यह एक परिवर्तनीय कॉल मान लेगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लार्वा केवल 2 पंक्तियों को सीमित करने के साथ जुड़ें

  2. वर्डप्रेस मेटा_क्वेरी को अनुकूलित करने में मदद चाहिए

  3. मोंगो डेटाबेस में छवि फ़ाइलों को संग्रहीत करना, क्या यह एक अच्छा विचार है?

  4. जब कुछ इंडेक्स होते हैं तो बड़ी टेबल पर MySQL InnoDB इंसर्ट/अपडेट बहुत धीमा क्यों हो जाता है?

  5. AWS RDS में max_connections का मान