@Warning: mysqli_query() expects parameter 1 to be mysqli, null given in XXXXXX问题解决TOC
作为初学php,用model1写程序web层和业务层没有分开时候可以从数据库中取到数据,但是一旦用MVC模式就登录不了,从数据库中取不到数据。后来在网上找了好久看到好多人遇到相似问题都没有解决。后来看了篇文章(下面参考网址)略有感悟,试了下果然成功了!
下面是用model1报错显示:
下面附上源代码:
工具类代码
<?php//工具类,完成对数据库操作class SqlHelper{public $conn;public $dbname=\”empmanage\”;public $username=\”root\”;public $password=\”123456\”;public $host=\”localhost\”;public function _construct(){$this->conn=mysqli_connect($this->host,$this->username,$this->password,$this->dbname);if (!$this->conn){die(\”连接失败\”.mysqli_errno($this->conn));}}//执行dql语句public function execute_dql($sql){$res=mysqli_query($this->conn, $sql) or die(mysqli_errno($this->conn));return $res;}//执行dml语句public function execute_dml($sql){$b=mysqli_query($this->conn,$sql);if(!$b){return 0;}else{if (mysqli_affected_rows($this->conn)>0){return 1;//执行成功}else {return 2;//表示没有行受到影响}}}//关闭连接public function close_connect(){if(!empty($this->conn)){mysqli_close($this->conn);}}}?>
调用工具类的程序:
<?phprequire_once \’SqlHelper.class.php\’;//该类完成admin表操作class AdminService{//提供验证用户合法的方法public function checkAdmin($id,$password){$sql = \”select password,name from admin where id=$id\”;$sqlHelper=new SqlHelper();$sqlHelper->_construct();$res=$sqlHelper->execute_dql($sql);if($row=mysqli_fetch_assoc($res)){if(md5($password)==$row[\’password\’]){return $row[\’name\’];}}mysqli_free_result($res);$sqlHelper->close_connect();return \”\”;}}?>
其实按照我的理解mysqli不会像mysql函数调用上次使用的连接,需要自己每次指定调用。因此只需要在调用工具类时重新调用下连接数据库的函数即可即$sqlHelper->_construct();
希望可以帮到大家!
参考网址