我们在使用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语句故意写错。 ?>

跟着百度学PHP[14]-PDO的错误处理模式&PDO执行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语句执行成功。";
 ?>

显示效果如下图所示:

跟着百度学PHP[14]-PDO的错误处理模式&PDO执行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语句执行成功。";
    
 ?>
demo

相关文章: