> 백엔드 개발 > PHP 튜토리얼 > 小弟我的oop错在哪里?是静态变量的有关问题吗

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

WBOY
풀어 주다: 2016-06-13 12:58:48
원래의
778명이 탐색했습니다.

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

class db{<br />
	public $conn;<br />
    private static $h = "localhost";<br />
    private static $u = "root";<br />
    private static $p = "123123";<br />
    private static $d = "air";<br />
	function __construct(){<br />
		$this->conn=mysqli_connect(self::$h,self::$u,self::$p,self::$d);<br />
		$this->conn->query('SET NAMES UTF8');<br />
		//mysqli_query($this->conn,'SET NAMES UTF8');<br />
	}<br />
    public function getOne($sql,$resultType=MYSQL_ASSOC){//只取一条<br />
    	$q=$this->conn->query($sql);<br />
    	$rt=$q->fetch_array($resultType);<br />
    	return $rt;<br />
    }<br />
}<br />
//下面是一个继承类,就是上面的那个db我写好了后。有只要引用数据库(只取一条的,取多条我未写出)便来继承。这样写不好吗?谢谢<br />
	class airVia extends db{<br />
		public function doSql(){<br />
			$sql='select * from xls1 where id=1';//实际中的语句复杂,只是测试<br />
			$r=$this->getOne($sql);//db::getone($sql);不行<br />
			return $r; <br />
		}<br />
	}//airVia<br />
//使用此类<br />
$wc=new airVia($v);echo $wc->doSql();<br />
로그인 후 복사


错误信息如下:
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(){<br />
parent::__construct();<br />
}
로그인 후 복사

------解决方案--------------------
需要重新构造一下。

引用:
给子类airVia 添加一个构造函数
PHP code?123public function __construct(){parent::__construct();}
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿