改善mysqli中使用DELETE的小bug

本文探讨了在使用mysqli库进行PHP MySQL操作时遇到的一个DELETE小bug,详细描述了问题的现象,并提供了解决该问题的步骤和方法,帮助开发者避免类似错误。
摘要由CSDN通过智能技术生成

背景知识

       用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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值