背景知识
用PHP架设网站, 必然要与数据库做交互,现在像用LAMP假设网站的话,大部分都是用MySQL,(我自己对NoSQL的研究会比较多一些,但这个不是本文讨论的内容)。而使用MySQL,还可以使用mysqli,全称是MySQL improved。
mysqli可以通过制定SQL语句,使用prepare(),query()等函数与数据库进行交互。
问题描述
我们通常会使用类似一下代码来对数据库中的某个表的一条或多条记录进行删除
public function deleteCtrl($ID){
$query="delete from t_table where id=".$ID;
echo $query;
if($this->mysqli->query($query)){
return TRUE;
}else{
$this->printError("delete failed:".$this->mysqli->error);
return FALSE;
}
}
但这个语句其实是形同虚设的,因为即使ID不存在或者字段不存在,该代码也会返回TRUE, 个人觉得确实是mysqli的一个bug,只有当语句无法执行才会返回FALSE,只要语句能执行都返回TRUE。
解决方法
我们通过引入mysqli->affected_rows来对数据是否确实被改动了做判断,从而才确定语句执行是否正确,详细代码如下:
public function deleteBusName($ID){
$query="delete from t_busname where id=".$ID;
echo $query;
if($this->mysqli->query($query)){
if($this->mysqli->affected_rows>0)
{
return TRUE;
}else{
echo $this->printError("delete failed:".$this->mysqli->error);
return FALSE;
}
}else{
$this->printError("delete failed:".$this->mysqli->error);
echo FALSE;
}
}
转载请注明出处:http://blog.csdn.net/luoyun614/article/details/42115637