2012-02-16 55 views
2

我是一個php noob。我正在嘗試將一個數據庫連接文件放入一個類(它是否需要私有,靜態或其他?)。 Netbeans現在拋出錯誤,當我嘗試從瀏覽器運行它時,我得到500個內部服務器錯誤。我想我錯過了一些簡單的事情!謝謝PHP類錯誤 - noob

<?php 
class config{ 

//define server, username, password and database 
var $db_host="domain.co.uk.mysql"; 
var $db_user="user";     
var $db_password="password";  
var $db_name="dbname"; 
var $db_tableprefix="tableprefix"; 
//connect to MySQL server 
mysql_connect($db_host,$db_user,$db_password); 

//select the database 
@mysql_select_db($db_name) or die ("Unable to select database: " . mysql_error()); 

} 
?> 
+2

看看如何創建php類...你沒有方法..你需要它們,所以你可以實例化你的類並使用你的連接。既然你是一個noob,正如你所說的,嘗試使用CodeIgniter,將會幫助你很多... – Gerep 2012-02-16 17:25:55

+1

你有什麼是爲PHP4編寫的synax錯誤。嘗試閱讀一下(http://www.php.net/manual/en/language.oop5.basic.php)一下,如果你仍然無法工作,請回來。 – KillerX 2012-02-16 17:26:57

回答

2

您的任何聲明都不在方法中。而且你還沒有實例化這個類並調用了一個可以執行你的語句的方法。

類用於面向對象編程。你的班級在課堂上只有老規則的程序代碼,這是行不通的。

<?php 
    class config{ 

     //define server, username, password and database 
     var $db_host="domain.co.uk.mysql"; 
     var $db_user="user";     
     var $db_password="password";  
     var $db_name="dbname"; 
     var $db_tableprefix="tableprefix"; 

     public function connect() { 
      //connect to MySQL server   
      mysql_connect($db_host,$db_user,$db_password); 

      //select the database 
      @mysql_select_db($db_name) or die ("Unable to select database: " . mysql_error()); 
     } 

    } 

    $var = new config(); 
    $var->connect(); 

?> 
0

在編寫類,你必須知道的事情是如何工作的?有屬性,方法等..只是寫的類不會做的工作。定義你想做什麼 - 一般的mysql類連接器,一些特定的任務?

1

舊的mysql庫不適合面向對象的類。使用的mysqli像這樣...

class config{ 
    //define server, username, password and database 
    private $db_host="domain.co.uk.mysql"; 
    private $db_user="user";     
    private $db_password="password";  
    private $db_name="dbname"; 
    private $db_tableprefix="tableprefix"; 

    //connect to MySQL server 
    public static function getConnection(){ 
     return new mysqli($db_host,$db_user,$db_password, $db_name); 
    } 
} 

然後調用你的類是這樣的:

$conn = config::getConnection(); 

然後,您可以使用類似的連接:

$result = $conn->query("select * from sometable;"); 
var_dump($result); 

此外,你可能想名字你的班級以外的配置....也許DbConnection並把它放在一個文件本身稱爲DbConnection.php

祝你好運!

1

爲了這裏的參數,我假設你的類叫做「config」是爲了保存遠遠超過數據庫的配置信息。在這種情況下,我會創建一個名爲config的類,它具有您的配置設置。

class config { 
    //define server, username, password and database 
    var $db_host="domain.co.uk.mysql"; 
    var $db_user="user";     
    var $db_password="password";  
    var $db_name="dbname"; 
    var $db_tableprefix="tableprefix"; 
} 

併爲您的數據庫對象的類,它應該擴展mysqli的對象,因爲它比程序MySQL的功能更加高效和建造OOP:

class db extends mysqli { 
     protected static var $dbo = NULL; 
     public static function &getInstance() { 
      //load config 
      $config = new config(); 
      if(self::$dbo === NULL) self::$dbo = new db($config->db_host,$config->db_user,$config->db_password, $config->db_name); 
     } 
     return self::$dbo; 
    } 

這將允許你建立的其他功能到您的DBO類中,它將阻止腳本與數據庫進行重複連接。當你想使用一個數據庫連接,請致電:

$db = db::getInstance(); 

你會收到DB類(mysqli的),你可以在那裏使用的實例。