我们在使用PDO去执行sql语句的时候并不会报错.如下案例所示:
<?php try {
//$pdo = new pdo("mysql:host=主机;port=端口;dbname=数据库","数据库名","密码"); $pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root",""); } catch (PDOException $e) { echo $e->getmessage(); } echo $pdo->exec("insert into aaaa values(aaa)");//此处sql语句故意写错。 ?>
但返回的结果是一篇空白,也就是说sql语句执行错误了我们并不知道,这样是不行的,极大的影响了工作。那么这时候我们就需要自己写一个错误让他来报错。
我们需要借助$pdo->errorcode以及$pdo->errorinfo
<?php try{ $pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root",""); }catch(PDOException $e){ echo $e->getmessage(); } echo "PDO对象创建成功.<br />"; $sql = $pdo -> exec("insert inssssto users(gold,user,password) values(7,'hello','world')"); if(!$sql){ echo $pdo->errorcode(); echo "<br />"; print_r($pdo->errorinfo()); exit; } echo "sql语句执行成功。"; ?>
显示效果如下图所示:
sql语句刻意写错了的。当然了我们也可以使用try catch
<?php try{ $pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root",""); }catch(PDOException $e){ echo $e->getmessage(); } echo "PDO对象创建成功.<br />"; $sql = $pdo -> exec("insert inssssto users(gold,user,password) values(7,'hello','world')"); if(!$sql){ echo $pdo->errorcode(); echo "<br />"; print_r($pdo->errorinfo()); exit; } echo "sql语句执行成功。"; ?>