Heim > Backend-Entwicklung > PHP-Tutorial > 小弟我的oop错在哪里?是静态变量的有关问题吗

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

WBOY
Freigeben: 2016-06-13 11:06:45
Original
768 Leute haben es durchsucht

我的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 />
Nach dem Login kopieren


错误信息如下:
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 />}
Nach dem Login kopieren

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

引用:
给子类airVia 添加一个构造函数
PHP code?123public function __construct(){parent::__construct();}
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage