अंतिम अपडेट:
मैंने अदिति के साथ एक चैट सत्र खोला और हमने वहां कुछ डिबगिंग की।
जैसा कि यह पता चला है, समस्या यह थी कि उसने एक सर्वर से अपग्रेड किया था जिसमें छोटे टैग सक्षम थे जो कि नहीं था। परिणामस्वरूप, उसके सभी कोड जो छोटे टैग में संलग्न थे, निष्पादित नहीं किया जा रहा था, और इसमें उसकी कॉन्फ़िगरेशन फ़ाइल भी शामिल थी।
प्रश्न में त्रुटि mysql_connect()
. के कारण हुई थी फ़ंक्शन निष्पादित नहीं किया जा रहा था क्योंकि उस पूरी फ़ाइल को निष्पादित नहीं किया जा रहा था। एक mysql_query()
उस कनेक्शन पर निर्भर कॉल इस वजह से विफल हो गया।
पूर्ण <?php
. का उपयोग करने के लिए उसके छोटे टैग को सही करने के बाद टैग, उस फ़ाइल को निष्पादित किया गया। जैसा कि इस प्रश्न के मेरे मूल उत्तर में चर्चा की गई है, चर के चारों ओर एकल उद्धरण mysql_connect()
को पास किए जा रहे हैं समस्याओं का कारण बना। यह सलाह देने के बाद कि उन एकल उद्धरणों को हटा दिया जाए, कनेक्शन सफल हो गया और समस्या का समाधान हो गया।
किसी भी इच्छुक पार्टियों के लिए संपूर्ण डिबगिंग सत्र, यहां पाया जा सकता है। ।
पहला अपडेट:
इसे थोड़ा करीब से देखने के बाद, दो टुकड़े हैं जो मेरी मूल प्रतिक्रिया में फिट नहीं हैं (जो मैंने इस उत्तर के नीचे रखा है, क्योंकि इसमें अभी भी कुछ अच्छी जानकारी है)।
सबसे पहले, त्रुटि mysql_query()
. द्वारा ट्रिगर की जा रही है नहीं mysql_connect()
. ऐसा शायद इसलिए है क्योंकि कनेक्शन के आस-पास कोई त्रुटि प्रबंधन नहीं है, इसलिए त्रुटि बाद में ध्यान नहीं दी जाती है। कनेक्शन के आसपास कुछ त्रुटि प्रबंधन जोड़ने का प्रयास करें:
if (!($con = mysql_connect('$localhost','$username','$password'))) {
echo mysql_error();
}
if (!mysql_select_db('$dbname',$con)) {
echo mysql_error();
}
उपरोक्त में, त्रुटि होते ही त्रुटियों को प्रदर्शित किया जाएगा।
दूसरी चीज़ जो मैं देख रहा हूँ वह यह है कि आप localhost
से जुड़ रहे हैं ODBC
. के साथ उपयोगकर्ता। इसका कोई मतलब नहीं है यदि आपके द्वारा ऊपर दिखाए गए कनेक्शन कोड द्वारा त्रुटि ट्रिगर की जा रही है। या तो आप $username
. नामक उपयोगकर्ता के साथ लॉग ऑन कर रहे होंगे यदि आपकी समस्या एकल उद्धरण समस्या है जिसे मैं नीचे समझाता हूं, या root
अगर आप नहीं हैं।
ऐसा लगता है कि PHP आपके PHP सेटअप के लिए डिफ़ॉल्ट क्रेडेंशियल से जुड़ने की कोशिश कर रही है (आपके php.ini
में पाया गया है) फ़ाइल), आपके द्वारा प्रदान किए गए प्रमाण-पत्रों के बजाय। इससे मुझे विश्वास होता है कि आप जो लाइनें हमें दिखा रहे हैं, वे वास्तव में निष्पादित की जा रही लाइनें नहीं हैं। क्या आप सुनिश्चित हैं कि आप अपने कोड में कहीं और कनेक्ट करने का प्रयास नहीं कर रहे हैं? यदि आप हैं, तो मुझे संदेह है कि आपकी त्रुटि कोड के उस हिस्से में है।
यह भी संभव है (मुझे जांचना होगा) कि जब आप mysql_query()
चलाने का प्रयास कर रहे हों एक शून्य कनेक्शन के खिलाफ, शायद PHP आपके लिए कनेक्शन बनाने का प्रयास कर रहा है। हालांकि मैं उस पर भरोसा नहीं करूंगा।
मेरा सुझाव है कि आप ऊपर दिए गए अद्यतन कोड को चलाने का प्रयास करें, जो mysql_error()
का उपयोग करता है त्रुटियों को दिखाने के लिए कार्य करते हैं जैसे वे होते हैं। आप कुछ echo
. में भी जोड़ सकते हैं कुछ अच्छे पुराने जमाने के प्रिंटफ डिबगिंग के लिए उन ब्लॉकों में अपने स्वयं के बयान।
मूल उत्तर:
समस्या यह है कि आप अपने चर को सिंगल कोट्स के अंदर लपेट रहे हैं। यदि आप उन्हें सिंगल कोट्स में लपेटते हैं, तो PHP वेरिएबल को वैल्यू का मूल्यांकन नहीं करता है। उदाहरण के लिए, root
. पास करने के बजाय दूसरे तर्क के रूप में, आप $username
. पास कर रहे हैं . अंत में, आप $localhost
. नामक सर्वर में लॉग इन करने का प्रयास कर रहे हैं $username
. नामक उपयोगकर्ता के साथ $password
. के पासवर्ड के साथ ।
स्ट्रिंग्स के लिए PHP दस्तावेज़ पृष्ठ पर एक नज़र डालें . यह इसकी व्याख्या करता है:
यदि आप एक स्ट्रिंग के अंदर चर का उपयोग करना चाहते हैं, तो आपको डबल . का उपयोग करने की आवश्यकता है उद्धरण, एकल नहीं। इस मामले में, हालांकि, आपको इन चरों को उद्धरणों में लपेटने की बिल्कुल भी आवश्यकता नहीं है, क्योंकि उनके मान पहले से हैं तार। आप केवल वेरिएबल को अपने आप पास कर सकते हैं। इसे आजमाएं:
$con=mysql_connect($localhost, $username, $password);
mysql_select_db($dbname, $con);