前言:在这次做一个项目,数据库进行封装的时候,数据库本来是成功返回true,失败返回false,但是因为一系列原因,改变原来的数据库封装类,成功的update,delete,insert的时候,返回受到影响的行数!
利用函数:mysqli_affected_rows();
本文以update为例
其中,我开始使用这个函数的时候是这样子的:
/**
* 修改数据
* @param $sql 修改语句
* @return mixed false:插入失败 int 返回影响行数
*/
public function update($sql){
$result = mysqli_query($this->link, $sql);
if($result){
return mysqli_affected_rows($result);
}else{
return false;
}
}
按照网上的写的,完全莫得问题。是的,乍一看莫得问题,但是会抛出一个warning
Warning: mysqli_affected_rows() expects parameter 1 to be mysqli, bool given in F:\projects\webProjects\examnationPlatform\php\dbMysql.php on line 82
经过我的尝试之后,改成
/**
* 修改数据
* @param $sql 修改语句
* @return mixed false:插入失败 int 返回影响行数
*/
public function update($sql){
$result = mysqli_query($this->link, $sql);
if($result){
return mysqli_affected_rows($this->link);
}else{
return false;
}
}
ok完全莫得问题了,mysql_affected_rows里面的参数应该是本次连接数据库,而不是mysqli_query的结果,网络不靠谱,坑爹坑到死▄█▀█●
附:
/**
* 连接数据库,已经连接上数据库
*/
public function connection(){
$this->link = mysqli_connect($this->host, $this->user, $this->pass, $this->dbName);
if(!$this->link){
echo "连接失败:".mysqli_connect_error()."<br>";
}
$this->link->query('set names '.$this->charset);//设置字符集
}