这是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代码。
答案 0 :(得分:3)
Header::sayfaHeader();
它调用没有对象创建的方法。你必须这样做
Header obj = new Header();
obj->sayfaHeader();
如果要调用类的方法,则将方法声明为static
。但是你不能使用$this
引用,因为静态方法和成员没有引用类对象。
更新:
mysql_select_db
返回bool
值。您必须使用$link
变量进行查询。
答案 1 :(得分:1)
您没有数据库问题,
你的代码错了。
Header::sayfaHeader();
这适用于静态方法。但是你需要一个实例来实际调用该方法。
尝试:
Header obj = new Header();
obj->sayfaHeader();
答案 2 :(得分:-1)
我认为您需要构造父实例化数据库类
public function __construct()
{
parent::__construct();
$baglan = $this->db;
}
答案 3 :(得分:-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);
}