php sql 异常判断
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php sql 异常判断相关的知识,希望对你有一定的参考价值。
在php中执行sql语句的时候,如果遇到sql语句有错误(比如插入的时候,有些值不符合约束),这时,php就会终止运行了。 我是想问, 能不能事先判断出sql语句是否存在错误?
当然,简单的判断我知道,比如唯一性约束,就先查询是否存在,如不存在再插入。 这种常规的,我是知道的。 我想问的是否能有一种综合的预判机制,可以判断出sql语句是否有错误,只需要关心是否有错误,而不需要去关心是哪种错误。
php的try...catch{} 不起作用的, 一旦遇到 ERROR级别的错误,就不会继续运行了
(若想获取错误的文本描述信息 , 可以使用 mysql_error() )
例子:
$资源句柄 = mysql_connect(....);
@mysql_query(\'abcdee\' , $资源句柄);
var_dump(mysql_errno($资源句柄));
var_dump(mysql_error($资源句柄));
================================
实现判断语句是否正确. 那就得在拼接sql的时候下功夫.
如果把字段值的验证与过滤做到位了.
那拼接出来的sql 不会有问题的. 参考技术A mysql_connect('127.0.0.1','root','123456');
mysql_select_db('test');
$sql = "select * from abc";
try
if(@!mysql_query($sql))
throw new Exception('产生数据链接错误',1); //抛出异常信息
echo '继续执行';
catch(Exception $e)
echo '异常处理';
//echo $e->__toString(); 捕获抛出异常信息
参考技术B 已经写了程序,就比较麻烦了,
一般情况下,我的习惯是写好了程序,先输出语句,然后检查语句是否正常,再用程序执行,如果防止错误可以使用try 来防止 程序死掉,
try
$sql = "";
//各种操作
catch (Exception $e)
//获取错误信息
echo 'Caught exception: ', $e->getMessage(), "\n";
参考技术C 可以先把sql 语句用 echo 输出.然后在命令行中调试.正确之后在写下面的程序 参考技术D trycatch吧,捕捉到错误想怎么处理就看你自己了,也可以用事务处理,只有全部插入正确才会插入数据,否则会自动回滚
以上是关于php sql 异常判断的主要内容,如果未能解决你的问题,请参考以下文章
扩展Exception,增加判断Exception是否为SQL引用约束异常方法!