2013-05-15 28 views
-1

我正在創建一個類conn.php,其中我使用相同的用戶和密碼連接到三個數據庫。 conn.php的代碼在下面給出:php中使用類的多個數據庫連接

<?php 

    /** 
    * @author Hira Tiwari 
    * @copyright 2013 
    */ 

    class createConnection //create a class for make connection 
    { 
     var $host="localhost"; 
     var $username=""; // specify the sever details for mysql 
     var $password=""; 
     var $database1=""; 
     var $database2=""; 
     var $database3=""; 
     var $myconn; 

     function connectToDatabase() // create a function for connect database 
     { 

      $conn= mysql_connect($this->host,$this->username,$this->password); 

      if(!$conn)// testing the connection 
      { 
       die ("Cannot connect to the database"); 
      } 

      else 
      { 
       $this->myconn = $conn; 
      } 

      return $this->myconn; 
     } 

     function selectDatabase1() // selecting the database. 
     { 

      mysql_select_db($this->database1); //use php inbuild functions for select database 

      if(mysql_error()) // if error occured display the error message 
      { 
       echo "Cannot find the database ".$this->database1; 
      }  
     } 

     function selectDatabase2() // selecting the database. 
     { 

      mysql_select_db($this->database2); //use php inbuild functions for select database 

      if(mysql_error()) // if error occured display the error message 
      { 
       echo "Cannot find the database ".$this->database2; 
      } 

     } 

     function selectDatabase3() // selecting the database. 
     { 
      mysql_select_db($this->database3); //use php inbuild functions for select database 

      if(mysql_error()) // if error occured display the error message 
      { 
       echo "Cannot find the database ".$this->database3; 
      } 

     } 

     function closeConnection() // close the connection 
     { 
      mysql_close($this->myconn); 
     } 
    } 
?> 

我正在這個類在另一個PHP文件的對象從表 包括(conn.php')訪問所述數據;

$connection = new createConnection(); //i created a new object 
$connn = $connection->connectToDatabase(); // connected to the database 
$connection->selectDatabase1();// closed connection 

它不聯機工作(顯示拒絕用戶temptes2_data'@ 'localhost' 的SELECT命令),但在本地主機上正常工作。如果我正在另一個php文件中建立連接並連接到數據庫,那麼工作正常並選擇所有數據。但是如果我在函數conn.php中建立連接,那麼它不起作用。誰能幫我 ?

如果我想它,它做工精細

<?php 

    $host="localhost"; 
    $username=""; 
    $password=""; 
    $database1=""; 

    $conn= mysql_connect($host,$username,$password) or die(mysql_error()); 

    if(!$conn)// testing the connection 
    { 
     die ("Cannot connect to the database"); 
    } 
    mysql_select_db($database1,$conn) or die(mysql_error()); 
    $query = mysql_query("select * from mptblevent") or die(mysql_error()); 
    while($row = mysql_fetch_array($query)) 
    { 
     echo $row['even_sid']."<br>"; 
    } 

?> 
+0

爲什麼不回聲'mysql_error()'看看錯誤是什麼? – andrewsi

+2

不要使用'mysql_ *',它已被棄用。您應該使用'mysqli_ *'或'PDO'。 –

+0

@andrewsi:我用過mysql_error,但沒有顯示任何錯誤。不知道我在哪裏弄錯了。 –

回答

0

STOP!

不要嘗試在mysql_中執行此操作,請使用mysqli。它的面向對象特性使你正在嘗試做的小事:

$DB_NAME = "db1"; 
$DB_HOST = "host"; 
$DB_USER = "user"; 
$DB_PASS = "pass"; 
$mysqli1 = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 

$DB_NAME = "db2"; 
$mysqli2 = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 


$query = "SELECT .... "; 

$result1 = $mysqli1->query($query) or die($mysqli1->error); 
$result2 = $mysqli2->query($query) or die($mysqli2->error); 

等很多更容易和遷移真的不採取了很多的努力。我最近自己做了。一個小時左右〜15個PHP腳本

+0

但是它在localhost上工作正常。 –

+0

我會建議遷移到mysqli不管,因爲mysql_已被棄用的功能,將來不會被支持...如果你想與OO相反,你仍然可以在mysqli中使用過程分配。 – o0rebelious0o

+0

你可以澄清你的問題多次閱讀它我仍然不認爲我已經明白你的問題是什麼,這一點特別是'不能在線工作(顯示SELECT命令拒絕給用戶'temptes2_data'@'localhost')但在localhost上正常工作。「 – o0rebelious0o