2012-02-16 5 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

+1

PHP4用に書かれたsynaxエラー+があります。これを読んでみてください(http://www.php.net/manual/en/language.oop5.basic.php)。まだ動作させることができない場合はもう一度やり直してください。 – KillerX

答えて

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ライブラリは、オブジェクト指向のクラスには最適ではありません。名前を付けることがあり、また

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

$conn = config::getConnection(); 

あなたは、その後のような接続を使用することができます。

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); 
    } 
} 

次に、このようなあなたのクラスを呼び出す...このようmysqliの使用config以外のクラス... DbConnectionとDbConnection.phpというファイルに入れてください

幸運!

1

ここでの議論のために、私はあなたのクラス "config"がデータベースの設定情報よりはるかに多くを保持することを前提としています。どのような場合には、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"; 
} 

そしてそれは、手続きのMySQL関数よりも効率的だとOOPのために構築されたので、mysqliのオブジェクトを拡張する必要があり、あなたのDBオブジェクトのクラス、:これは、あなたが他の機能を構築することができます

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(); 

そして、あなたは、あなたがそこから使用することができますデシベルクラス(mysqliの)のインスタンスを受け取ります。