2

これは dbconnect.class.php です:

<?php  

class Connect 
{ 
    public $error; 
    protected $db; 
    public function __construct() 
    { 
        $link = mysql_connect("localhost","root","1") or $this->error = mysql_error(); 
        $db = mysql_select_db("tarih",$link); 
        $this->db = $db; 
    } 
} 
?>

そして、これはメインのphpファイルです:

<?php
//header.class.php 
require_once 'dbconnect.class.php'; 

class Header extends Connect 
{ 
    public $headers = array(); 
    private $baglan; 
    public function __construct() 
    { 
        /* 
        * Bu sınıf sayfaların header bilgilerini işler. 
        */ 
        $baglan = $this->db; 
    } 

    public function sayfaHeader($sayfa = true) 
    { 
        $sql = "SELECT * FROM header WHERE id='" . $sayfa . "'"; 
        $query = mysql_query($sql,$this->baglan); 
    } 


} 

Header::sayfaHeader(); 
?>

メインの php ファイルを実行すると、次のエラーが表示されます。

Fatal error: Using $this when not in object context in C:\AppServ\www\ilk\class\header.class.php on line 19  

19行目:

$query = mysql_query($sql,$this->baglan);  

問題はどこだ?PHPコードを長い間書いていないため、問題がわかりません。

4

4 に答える 4

3
Header::sayfaHeader(); 

オブジェクトを作成せずにメソッドを呼び出します。あなたはこれをしなければなりません

Header obj = new Header();
obj->sayfaHeader();

クラスのメソッドを呼び出したい場合は、メソッドを として宣言しstaticます。ただし$this、静的メソッドとメンバーはクラスオブジェクトを参照していないため、参照を使用できません。

更新:
mysql_select_db値を返しboolます。$linkクエリには変数を使用する必要があります。

于 2012-05-02T16:23:20.447 に答える
1

データベースに問題はありません。

あなたのコードは間違っています。

Header::sayfaHeader(); 

これは静的メソッド用です。ただし、実際にそのメソッドを呼び出すにはインスタンスが必要です。

試す:

Header obj = new Header();
obj->sayfaHeader();
于 2012-05-02T16:24:38.180 に答える
-1

データベースクラスをインスタンス化するには、親を作成する必要があると思います

public function __construct() 
{ 
    parent::__construct();
    $baglan = $this->db; 
} 
于 2012-05-02T16:45:36.390 に答える
-1
public function __construct() 
{ 
    // if you do this, add a $this-> to baglan to acces it in the class
    $this->baglan = $this->db; 
} 

public function sayfaHeader($sayfa = true) 
{ 
    $sql = "SELECT * FROM header WHERE id='" . $sayfa . "'"; 

    // or, since you inherit the $this->db
    $query = mysql_query($sql,$this->db); 
} 
于 2012-05-02T17:03:51.437 に答える