php - Warnings from mysql_connect() not populating mysql_error() -


पर्यावरण - PHP5.2.17, MySQL5.0.92

मैं अपने आवेदन में त्रुटि लॉगिंग ढांचे को कार्यान्वित कर रहा हूं और मैं एक डेटाबेस में त्रुटियों और चेतावनियों को लॉग ऑन करने का प्रयास कर रहा हूं।

  $ db = mysql_connect ('होस्ट', 'डेटाबेस', 'पासवर्ड'); अगर (! $ Db) {लॉग (mysql_error ()); } ... कोड जारी रखें   

मैं लॉगिंग का परीक्षण करना चाहता था और गलत मेजबान को mysql_connect फ़ंक्शन पर पास करना था। उम्मीद के मुताबिक मुझे स्क्रीन पर चेतावनी मिली

  चेतावनी: mysql_connect () [function.mysql-connect] अज्ञात MySQL सर्वर होस्ट 'होस्ट' (1) में / path / to / my / php /file.php पंक्ति 4 पर   

और मेरे लॉग फ़ंक्शन को बुलाया गया था लेकिन mysql_error () शून्य है। पीएचपी मैनुअल (http://php.net/manual/en/function.mysql-connect.php) के अनुसार, mysql_error () को अंतिम MySQL त्रुटि वापस करनी चाहिए मैनुअल में उनके पास एक उदाहरण है कि कैसे mysql_error () का उपयोग करते हुए स्क्रीन पर त्रुटि को गूंजती है।

मैंने mysql_error ($ db) का उपयोग करने की कोशिश की, लेकिन यह बताते हुए एक त्रुटि देता है कि $ db परिभाषित नहीं है ।

मैंने अपने फ़ंक्शन की जगह echo mysql_error (); और मैं कुछ भी नहीं दिखाता।

मैंने mysql_errno () का उपयोग करने की कोशिश की; और मुझे भी शून्य मिलता है।

मुझे पता है कि स्क्रिप्ट चेतावनी को पकड़ रहा है क्योंकि यह स्क्रीन पर आउटपुट कर रहा है।

मेरी समस्या को हल करने का एक तरीका एक चेतावनी को संग्रहीत करना है वेरिएबल।

मुझे कोई भी मदद की सराहना है जो किसी को भी प्रदान कर सकता है। धन्यवाद।

अद्यतन - 2 समाधान:

समाधान 1: (इस पोस्ट में अपनी टिप्पणियों में से एक में सुझाव देने के लिए आप को मारियो के लिए धन्यवाद)

उपयोग करें PHP फ़ंक्शन error_get_last () - संदर्भ (http://php.net/manual/en/function.error-get-last.php)।

इस समाधान के साथ नया कार्य कोड: < पूर्व> $ db = mysql_connect ('होस्ट', 'डेटाबेस', 'पासवर्ड'); अगर (! $ Db) {$ error = error_get_last (); लॉग ($ त्रुटि ['प्रकार']।: "। $ त्रुटि ['संदेश']।" फ़ाइल में "। $ त्रुटि ['फ़ाइल']।" ऑन लाइन "। $ त्रुटि ['पंक्ति']); } ... कोड जारी रखें

समाधान 2: (नीचे दिए गए उत्तर में यह सुझाव देने के लिए पपुरी के लिए धन्यवाद)

$ php_errormsg का उपयोग करने से पहले, हमें ट्रैक_ररर्स सेट करने की आवश्यकता है Php.ini फ़ाइल में 1 के लिए। बस अपने php.ini फ़ाइल में निम्नलिखित पंक्ति को शामिल करें

  track_errors = 1   

वैकल्पिक रूप से आप ट्रैक_र्रों को स्क्रिप्ट के अंदर 1 में सेट कर सकते हैं, जिसमें कोड नीचे दिखाई देता है यह विकल्प:

  ini_set ('track_errors', 1); $ Db = mysql_connect ('होस्ट', 'डेटाबेस', 'पासवर्ड'); अगर (! $ Db) {लॉग (mysql_error ()); } ... कोड जारी रखें   

दोनों समाधान काम करते हैं !!!

< P> सुनिश्चित करें कि आप track_errors को चालू करने से पहले $ php_errormsg का उपयोग कर सकते हैं:
  // इसके बजाय अपने php.ini फ़ाइल में ऐसा करें कोड का Ini_set ('track_errors', 1); $ Db = mysql_connect ('होस्ट', 'डेटाबेस', 'पासवर्ड'); अगर (! $ Db) {लॉग ($ php_errormsg); }    

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -