Sunday 15 April 2012

php - PDO - Call to a member function execute() on a non-object -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 2 9 उत्तर

    मुझे PDO के साथ समस्या है ...
    कक्षा, जिसमें मुझे एक त्रुटि है, का चयन करने के लिए उपयोग किया जाता है (और भविष्य में - अन्य) डेटाबेस को क्वेरी, पीएचपी: पीडीओ का उपयोग कर ... जैसे:

      $ Db = नया पीडीओएक्ट; $ Arr = सरणी ("से" = & gt; "उपयोगकर्ता"); $ पंक्ति = सरणी ("id"); $ Val = सरणी (0); $ प्रकार = सरणी ("INT"); $ Db- & gt; चुनें ($ arr, $ पंक्ति, $ val, $ प्रकार);   

    जब मैं इसे निष्पादित करता हूं,

      & lt ;? यदि (! परिभाषित ("sKEY")) {exit ("ह्यूस्टन, हम एक समस्या है"); } वर्ग PDOAct {सार्वजनिक $ db; फ़ंक्शन __ कंस्ट्रक्ट () {try {$ this- & gt; db = नया पीडीओ (DBdriver। ': Host ='। DBhost। '; Dbname ='। डीबीबेस, डीबीसर, डीबीपीएस); $ This- & gt; डीबी- & gt; सेट ऑट्रिब्यूट (पीडीओ :: एटीटीआरएआरएमओडीई, पीडीओ :: ईआरआरएमओडीडीएक्सईपीईशन); } पकड़ (PDOException $ e) {$ this- & gt; गलती ($ e- & gt; getMessage ()); }} फ़ंक्शन का चयन करें ($ arr, $ पंक्ति, $ val, $ प्रकार) {try (for $ i = 0; $ i & lt; गिनती ($ पंक्ति); $ i ++) {if (isset ($ पंक्ति [$ i] ) & Amp; amp; और $ ([$ i]) और amp; amp; और amp; जारी ($ प्रकार [$ i])) {अगर ($ arr [चयन करें]! = "" & Amp; amp; amp; amp; amp; $ [चयन]! = "*") {यदि ($ i & lt; 1) {$ do = $ this- & gt; db- & gt; तैयार ("चयन करें"। $ Arr [चयन]। "` से FROM `" $ arr [से ]। "जहां` `। $ पंक्ति [$ i]।" `= ':"। $ पंक्ति [$ i]। "'"); } और ($ $ $ [$ i]]। ; $$ [$ do = $ this- & gt; db- & gt; तैयार करें ($ i & lt; 1) {$ do = $ - [चयन करें] == "" $ arr [select] == ​​"*") {if ($ i & lt; 1) {$ do = "SELECT * FROM '"। $ Arr [से]। "` WHERE' "। $ पंक्ति [$ i]।" `= ':"। $ पंक्ति [$ i]। "' '); } और ($ $ $ [$ i]]। ; }} $ Do- & gt; bindValue (':'। $ पंक्ति [$ i], $ val [$ i], "पीडीओ :: पैरा 8"। $ प्रकार [$ i]); } एफ़आईएफ़ ($ पंक्ति [$ i]) और amp;; isset ($ val [$ i]) & amp;; isset ($ प्रकार [$ i])) {अगर ($ arr [select] ! = "" & Amp; amp; amp; amp; amp; [चयन करें]! = "*" & Amp; amp; $ i == 0) {$ कर = $ this- & gt; db- & gt; तैयार ("चयन करें"। $ Arr [चयन]। "` से ``। $ Arr [से]। "` '); $ ईआर [चयन] == "" $ arr [चयन करें] == "*" और amp; $ i == 0) {$ $ = $ this- & gt; डीबी- & gt; तैयार (" से चयन करें * से। $ Arr [से]। "` '); }} Else {exit ("क्वेरी त्रुटि!"); }} Var_dump ($ this- & gt; db- & gt; तैयार ("SELECT * FROM` "$ arr [से]।" `WHERE '"। $ पंक्ति [0]। "` =': "। $ पंक्ति [ 0] " '"))। } पकड़ (PDOException $ e) {$ this- & gt; गलती ($ e- & gt; getMessage ()); } वापसी $ करो; } फ़ंक्शन त्रुटि ($ ई) {file_put_contents ('लॉग'। DIR_SEP.'PDOerrors.txt ', $ e। "\ N", FILE_APPEND); बाहर निकलें ("ह्यूस्टन, हमें एक समस्या है"); }}? & Gt;   

    यह मुझे एक php-error देता है: " एक गैर-ऑब्जेक्ट पर सदस्य फ़ंक्शन निष्पादन () को कॉल करें " मैं उपयोग करने का प्रयास कर रहा था < कोड> var_dump (); - यह मुझे इस तरह smth देता है:

      वस्तु (PDOStatement) # 4 (1) {["querystring"] = & gt; स्ट्रिंग (40) "SELECT * FROM` उपयोगकर्ता `कहां` आईडी` = ': आईडी' "}   

    तो $ $-> DB- & gt; तैयार () ठीक । समस्या क्या है? मैं इस बारे में तीन घंटों से पीड़ित हूँ ..
    धन्यवाद!

    आप सामान की तरह नहीं कर सकते यह:

      यदि ($ i & lt; 1) {$ do = $ this- & gt; db- & gt; तैयार ("SELECT * FROM से"। $ Arr [से]। " जहां ``। $ पंक्ति [$ i]। "` = ': "। $ पंक्ति [$ i]।"' '); } और ($ $ $ [$ i]]। ; }   

    आपको अपने एसक्यूएल कथन (गतिशील) को उत्पन्न करने की जरूरत है और केवल जब आपके पास पूर्ण विवरण तैयार है, तो आप तैयार करें , आप सम्मिलित नहीं कर सकते हैं और आंशिक विवरण तैयार कर सकते हैं ।

No comments:

Post a Comment