进行数据库操作的时候,操作错误或者失败,但是不报错

Posted 寻觅beyond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进行数据库操作的时候,操作错误或者失败,但是不报错相关的知识,希望对你有一定的参考价值。

首先需要注意的是:

  php代码的运行错误 和 PHP与mysql中交互过程中,MySQL中发生的错误,并不一定是同步的。

 

Case 1:使用PDO,没有设置PDO::ATTR_ERRMODE

  PDO在没有设置错误处理模式的时候,默认的是PDO::ERRMODE_SILENT,即--不报错,不管是使用PDO::query还是PDO::exec都不报错,但是可以通过PDO::errorCode()来判断是否出错,或者query和exec的返回值来判断sql语句是否操作成功,注意此时PHP的代码是成功执行了的,注意区分。

  如果要显式的提示错误的话,可以将错误处理模式设置为PDO::ERRMODE_EXCEPTION。

  改正方法:  

PDO::setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION)

  

Case 2:使用mysqli,使用mysqli::query来执行update、delete、drop、insert这些DML类型的命令

  使用mysqli::query来执行DML命令的时候,其实是真的执行了,也返回执行结果了,但是操作失败了,不仅不会报错,而且还会继续执行后面的代码,这是很需要注意的。

  mysqli::query执行DML命令,成功的话,返回true;失败了就返回false。所以如果要使用mysqli::query来执行DML的话,请一定要加上判断,根据返回值决定是否进行下一步操作,不要因为一次失败的数据库操作,导致你后续工作的bug,而且这bug还是隐藏的,不容易发现。

 

  

以上是关于进行数据库操作的时候,操作错误或者失败,但是不报错的主要内容,如果未能解决你的问题,请参考以下文章

selenium-python:整个代码有时候不报错正确操作,但有时候就会报错,不懂为啥?

loadrunner 进行压力测试时,提示我 初始化失败通信错误

冲刺第六天

tomcat 启动不报错,但是访问不到,是为啥

java操作api发送http的delete请求,参数的value是中文报400错误,英文或数字就不报错,这个怎么破

idea编译时出现错误:xx包不存在,但是代码里面不报错