2010-11-23 16 views
7

pg_connect() तालिका प्रारूप में त्रुटि दिखा रहा है। त्रुटि संदेश दिखाने के बजाय तालिका प्रारूप के रूप में त्रुटि संदेश चेतावनी की आवश्यकता है।pg_connect() फ़ंक्शन त्रुटि कैसे पकड़ें?

त्रुटि संदेश
चेतावनी: pg_connect() [function.pg कनेक्ट]: घातक:: PostgreSQL सर्वर से कनेक्ट करने में असमर्थ पासवर्ड प्रमाणीकरण उपयोगकर्ता "परीक्षण" के लिए असफल में/घर/परीक्षण/public_html/QueueManager/लाइन 41

तालिका प्रारूप के रूप में त्रुटि दिखाने के बाद मॉड्यूल/डेटाबेस.एफ़पी।
pg_connect() निष्पादित अपवाद निष्पादित करने के बाद।
लेकिन काम नहीं कर रहा है।

कोड

function connect() 
{ 
    $HOST = $GLOBALS[Database_Conn][Db_Host];  # Host name 
    $USER = $GLOBALS[Database_Conn][Db_User];  # database user name 
    $DBNAME = $GLOBALS[Database_Conn][Db_Name]; # name of the database 
    $PASSWORD = $GLOBALS[Database_Conn][Db_Pass]; # password the database user. 

    try 
    { 
    $conn = pg_connect("host=$HOST dbname=$DBNAME user=$USER ". 
         "password=$PASSWORD sslmode=disable"); 
    if(!$conn) 
    { 
     throw new Exception("Database Connection Error"); 
    } 
    return $conn; 
    } 
    catch (Exception $e) 
    { 
    print <<<_HTML_ 
    <script> alert('Caught exception'); 
    </script> _HTML_; 
    die(); 
    } 
} 

मुझे समाधान

+0

उल्लेख है नहीं यह एक तरह से वायर्ड है कि आप एक अपवाद है, जबकि एक अपवाद को पकड़ने फेंक ... कृपया? (ईमानदार सवाल, क्या PHP इस प्रकार के फेंकने वाले अपवादों का समर्थन करता है) – DrColossos

+0

हां, PHP 5 और ऊपर अपवादों का समर्थन करता है। मुझे लगता है कि उसका कोड ऐसा ही है क्योंकि वह अपवाद सामग्री का परीक्षण कर रहा है। समस्या यह है कि "चेतावनी: pg_connect()" संदेश उत्पन्न होता है * * pg_connect से पहले भी लौटाता है। – intgr

+0

@DrColossos :: शायद वह डिफ़ॉल्ट अपवाद को छिपाना चाहता है जो कनेक्शन प्रयास में उपयोग किए गए उपयोगकर्ता नाम को प्रकट कर रहा है, इस मामले में यह संदेश है: 'पासवर्ड प्रमाणीकरण उपयोगकर्ता के लिए विफल "परीक्षण" ' –

उत्तर

4

पीएचपी द्वारा उत्पन्न त्रुटि पाठ को छुपाने के लिए दे, समारोह कॉल के सामने जोड़ने @, जैसे:

$conn = @pg_connect("host=$HOST dbname=$DBNAME user=$USER ". 
        "password=$PASSWORD sslmode=disable"); 

अधिक details here

+0

+100 यदि मैं कर सकता था। धन्यवाद! – colllin

+2

ध्यान रखें कि यदि 'pg_connect() 'फ़ंक्शन मौजूद नहीं है, तो आपकी स्क्रिप्ट अभी भी मर जाएगी, लेकिन आपको कोई त्रुटि दिखाई नहीं देगी। – AndreKR

15

pg_connect अपवाद नहीं फेंकता है, इसलिए आपको नीचे जैसे अपवाद में अनुवाद करना होगा।

function exception_error_handler($errno, $errstr, $errfile, $errline) { 
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline); 
} 
set_error_handler("exception_error_handler"); 

try { 
    [email protected]_connect("host=dbhost user=dbuser dbname=db password=dbpass"); 
} Catch (Exception $e) { 
    Echo $e->getMessage(); 
} 

इस और अधिक विस्तार

http://php.net/manual/en/language.exceptions.php

संबंधित मुद्दे