Warning: mysqli_query() expects parameter 1 to be mysqli, null given in XXXXXX问题解决

@Warning: mysqli_query() expects parameter 1 to be mysqli, null given in XXXXXX问题解决TOC

作为初学php,用model1写程序web层和业务层没有分开时候可以从数据库中取到数据,但是一旦用MVC模式就登录不了,从数据库中取不到数据。后来在网上找了好久看到好多人遇到相似问题都没有解决。后来看了篇文章(下面参考网址)略有感悟,试了下果然成功了!
下面是用model1报错显示:
执行dql语句报错
执行dml语句报错
下面附上源代码:
工具类代码

<?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); } } } ?>

调用工具类的程序:

<?php require_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();
希望可以帮到大家!
参考网址

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误通常是由于 SQL 查询语句执行失败导致的。`mysqli_fetch_array()` 函数需要传入一个有效的查询结果对象,但是如果查询执行失败,`mysqli_query()` 函数会返回 `false`,因此在调用 `mysqli_fetch_array()` 函数时会出现上述错误。 要解决这个问题,你可以在调用 `mysqli_query()` 函数之前,先检查一下查询语句是否执行成功,例如: ```php $query = "SELECT * FROM users"; $result = mysqli_query($conn, $query); if (!$result) { die("查询失败:" . mysqli_error($conn)); } while ($row = mysqli_fetch_array($result)) { // 处理查询结果 } ``` 在这个例子中,我们在调用 `mysqli_query()` 函数之后,先检查一下查询语句是否执行成功。如果查询失败,我们使用 `mysqli_error()` 函数输出错误信息,并使用 `die()` 函数终止程序执行。如果查询成功,我们就可以使用 `mysqli_fetch_array()` 函数处理查询结果了。 另外,你还需要确保数据库连接对象 `$conn` 是有效的。如果连接失败,`mysqli_connect()` 函数也会返回 `false`,因此你可以使用类似的方式来检查连接是否成功,例如: ```php $conn = mysqli_connect("localhost", "username", "password", "database"); if (!$conn) { die("连接失败:" . mysqli_connect_error()); } ``` 在这个例子中,我们在调用 `mysqli_connect()` 函数之后,先检查一下连接是否成功。如果连接失败,我们使用 `mysqli_connect_error()` 函数输出错误信息,并使用 `die()` 函数终止程序执行。如果连接成功,我们就可以继续执行数据库操作了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值