2012-05-13 13 views
9

का उपयोग कर MySQL सर्वर से कनेक्ट करने में सक्षम नहीं है मेरे पास एक PHP स्क्रिप्ट है जिसका उपयोग मैं एक MySQL डेटाबेस से कनेक्ट करने के लिए करता हूं। mysql_connect के माध्यम से कनेक्शन पूरी तरह से काम करता है, लेकिन जब पीडीओ के साथ की कोशिश कर मैं निम्नलिखित त्रुटि मिलती है:पीडीओ

SQLSTATE[HY000] [2005] Unknown MySQL server host 'hostname' (3) 

कोड मैं कनेक्ट करने के लिए उपयोग करने के नीचे है:

<?php 
    ini_set('display_errors', 1); 
    error_reporting(E_ALL); 

    $hostname_localhost ="hostname"; 
    $database_localhost ="dbname"; 
    $username_localhost ="user"; 
    $password_localhost ="pass"; 
    $user = $_GET['user']; 
    $pass = $_GET['pass']; 

    try{ 
     $dbh = new PDO("mysql:host=$hostname_localhost;dbname=$database_localhost",$username_localhost,$password_localhost); 
     echo 'Connected to DB'; 
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $dbh->prepare("SELECT check_user_company(:user,:pass)"); 
     $stmt = $dbh->bindParam(':user',$user,PDO::PARAM_STR, 16); 
     $stmt = $dbh->bindParam(':pass',$pass,PDO::PARAM_STR, 32); 

     $stmt->execute(); 

     $result = $stmt->fetchAll(); 

     foreach($result as $row) 
     { 
      echo $row['company_id'].'<br />'; 
     } 

     $dbh = null; 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 
    ?> 

अग्रिम धन्यवाद

+0

त्रुटि स्पष्ट है ... निर्दिष्ट होस्टनाम को आईपी पते पर हल नहीं किया जा सकता है। –

+3

कहां कहता है "होस्टनाम" आपको * अपने * mySQL सर्वर के होस्ट नाम या आईपी पते को भरना होगा। –

+1

मैं उल्लेख करना भूल गया, मैं आईपी एड्रेस का उपयोग कर रहा हूं (और वह आईपी पता भी त्रुटि में है) लेकिन मैंने पीडीओ का उपयोग करने के लिए – user1337210

उत्तर

3

यह प्रतीत होता है बहुत सरल, यहां मैं अपने पीडीओ कनेक्टर बनाने के लिए उपयोग करता हूं (ध्यान दिया गया है कि आपका डीबीनाम और मेजबान मेरे से अलग तरीके से किया जाता है, अगर यह प्रासंगिक है, लेकिन चेक के लायक है):

पीडीओ निर्माण समारोह

require_once('config.inc.php'); 

function buildDBConnector(){ 
    $dsn = 'mysql:dbname='.C_BASE.';host='.C_HOST; 
    $dbh = new PDO($dsn, C_USER, C_PASS); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    return $dbh; 
} 

config.inc.php

define('C_HOST','localhost');// MySQL host name (usually:localhost) 
define('C_USER','sweetUsername');// MySQL username 
define('C_PASS','sweetPassword');// MySQL password 
define('C_BASE','superGreatDatabase');// MySQL database 

और यह कोई मतलब नहीं है, जब मैं newPDO दौरान चर सहित $dsn इनलाइन घोषित करने की कोशिश करता है, जबकि कॉल, मैं भी असफल रहा। मैंने इसे अलग कर दिया और ऐसा करने के लिए $ dsn चर का उपयोग किया। और तब से कोई समस्या नहीं है।

आश्चर्य है कि क्या आप मौके से साझा होस्टिंग में हैं?

नोट: आप एक समर्पित IP नहीं है, तो और इसके बदले एक नेट के माध्यम से जा रहे हैं, आपके आईपी ठीक से अपने वास्तविक सर्वर से अनुवाद नहीं करेगा।

यह सब मदद करता है?

अद्यतन: बस एक और बात के बारे में सोचा। क्या आप एक MySQL डेटाबेस से कनेक्ट करने का प्रयास कर रहे हैं जो कि आपकी स्क्रिप्ट को चलाने से अलग आईपी पर है? यदि ऐसा है, तो आपको उस IP के लिए दूरस्थ SQL पहुंच को सक्षम करने की आवश्यकता होगी, जिसे आप डेटाबेस से कॉल कर रहे हैं। करने के लिए काफी आसान है, लेकिन अगर आप स्थानीयहोस्ट तक नहीं पहुंच रहे हैं तो गंभीर।

+1

कोई रिमोट एसक्यूएल एक्सेस कैसे सक्षम करता है? – patorjk

9

एक ही समस्या है। मेरा समाधान एक और डेटाबेस पोर्ट था। मैंने लोकलहोस्ट लिखा: 1234 और यह त्रुटि मिली।

mysql:host=$hostname_localhost;port=1234;dbname=$database_localhost",$username_localhost,$password_localhost); 
     echo 'Connected to DB'; 
+1

आप महोदय शानदार हैं और मैं तुमसे प्यार करता हूँ – Nick

0

आप न डेटाबेस मेजबान DNS विवरण या आईपी पते निर्दिष्ट करने के लिए लग रहे हैं:

साथ ठीक किया गया। जोड़ना समस्या को हल करेगा