您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

小弟我的oop错在哪里?是静态变量的有关问题吗

2025/6/18 3:56:35发布11次查看
我的oop错在哪里?是静态变量的问题吗?
class db{
public $conn;
private static $h = localhost;
private static $u = root;
private static $p = 123123;
private static $d = air;
function __construct(){
$this->conn=mysqli_connect(self::$h,self::$u,self::$p,self::$d);
$this->conn->query('set names utf8');
//mysqli_query($this->conn,'set names utf8');
}
public function getone($sql,$resulttype=mysql_assoc){//只取一条
$q=$this->conn->query($sql);
$rt=$q->fetch_array($resulttype);
return $rt;
}
}
//下面是一个继承类,就是上面的那个db我写好了后。有只要引用数据库(只取一条的,取多条我未写出)便来继承。这样写不好吗?谢谢
class airvia extends db{
public function dosql(){
$sql='select * from xls1 where id=1';//实际中的语句复杂,只是测试
$r=$this->getone($sql);//db::getone($sql);不行
return $r;
}
}//airvia
//使用此类
$wc=new airvia($v);echo $wc->dosql();

错误信息如下:
fatal error: call to a member function query() on a non-object in d:\xampp\htdocs\chaxun\class\db.class.php on line 67
请问:
我的思路对吗?谢谢
一、写一个db类,来连接数据库,以库要操作数据库时,可以来继承;
二,上述语句为何报错,看样子是那个$this->conn换成静态变量也不行。
------解决方案--------------------
应该是conn对象没有生成成功,检查一下参数啥的,打印输出conn对象看看是啥
------解决方案--------------------
fatal error: call to a member function query() on a non-object
$this->conn=mysqli_connect(self::$h,self::$u,self::$p,self::$d);
没有实例化成功
但你的代码并没有问题,可以正常通过测试(当然是改了用户名、口令、库名和表名)
错误可能产生于其他地方,都 on line 67 了,你才贴出多少?
既然是封装,就应该把错误处理也封装进来。这样就不要到处去问为什么出错了
------解决方案--------------------
你需要初始化父类的构造方法
------解决方案--------------------
给子类airvia 添加一个构造函数
public function __construct(){
parent::__construct();
}
------解决方案--------------------
需要重新构造一下。
引用:给子类airvia 添加一个构造函数
php code?123public function __construct(){parent::__construct();}
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product