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

पीडीओ और पीएचपी - एक गैर-ऑब्जेक्ट पर एक सदस्य समारोह तैयार () पर कॉल करें

@papaja ने सिर पर कील ठोक दी। आपका पीडीओ कनेक्शन विफल हो गया, इस प्रकार आपके पास तैयार विधि को चलाने के लिए पीडीओ ऑब्जेक्ट नहीं है।

मेरे सिर के ऊपर से, मुझे लगता है कि आप $dsn स्ट्रिंग पर अंतिम उद्धरण खो रहे हैं। आप शायद $this->dbname के बाद और सेमी-कोलन से पहले निम्नलिखित जोड़ना चाहते हैं:

. "'"

यह एक एकल उद्धरण है जो दोहरे उद्धरण चिह्नों में लिपटा हुआ है। मैं DSN स्ट्रिंग बनाने के लिए निम्नलिखित सिंटैक्स का उपयोग करता हूँ:

"mysql:host=$this->HOST;dbname=$this->DATABASE"

वैसे भी, एक परीक्षण फ़ाइल बनाएं ताकि आप जान सकें कि समस्या क्या है। परीक्षण फ़ाइल इस तरह दिखनी चाहिए:

class TestDatabase{

    private $host      = DB_HOST;
    private $user      = DB_USER;
    private $pass      = DB_PASS;
    private $dbname    = DB_NAME;
    private $dbh;


    public function __construct(){

        $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;

        $options = array(
            PDO::ATTR_PERSISTENT    => true,
            PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
        );

        $this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
    }
}

ध्यान दें कि हम कोशिश पकड़ने वाले ब्लॉक के भीतर पीडीओ ऑब्जेक्ट की तात्कालिकता नहीं चला रहे हैं। जबकि आप कभी नहीं उत्पादन में ऐसा करें, यह आपके परीक्षण के लिए उपयोगी होगा क्योंकि यह आपके कनेक्शन के सभी विवरणों वाला एक घातक अपवाद फेंक देगा।

अब परीक्षण वर्ग को तत्काल करें और आपको प्राप्त होने वाली त्रुटियों को डीबग करके आगे बढ़ें। फिर से, वे पिछली त्रुटि की तुलना में अधिक विस्तृत होंगे क्योंकि यह एक अनकैप्ड पीडीओ अपवाद होगा।



  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 डेटाबेस में मौजूद है

  2. प्लगइन में कस्टम तालिका के साथ वर्डप्रेस पोस्ट_ऑर्डर द्वारा फ़िल्टर करें

  3. MySQL OUTFILE निर्यात विकल्पों में चयन करें

  4. त्रुटि कोड:1822। विदेशी कुंजी बाधा जोड़ने में विफल। संदर्भित तालिका 'pwlhseis' में बाधा 'ekdromes_ibfk_1' के लिए अनुपलब्ध अनुक्रमणिका

  5. MySQL में एक्सेंट सेंस्टिव प्राइमरी की का इस्तेमाल करें