Mod pengendalian pengecualian ralat: PDO::ERRMODE_EXCEPTION
Sebagai lampiran kepada menetapkan kod ralat, PDO akan membuang PDOException dan menetapkan maklumat ralatnya untuk mencerminkan kod ralat. Tetapan ini juga sangat berguna apabila menyahpepijat, kerana ia akan "meletupkan" titik ralat dalam skrip dengan berkesan, dengan cepat menunjukkan kawasan ralat yang mungkin dalam kod anda. (Ingat: jika pengecualian menyebabkan skrip dibatalkan, transaksi akan digulung semula secara automatik.)
Mod pengecualian juga sangat berguna kerana anda boleh menangani ralat menggunakan struktur yang lebih jelas daripada struktur pengendalian ralat gaya PHP tradisional bersarang daripada menggunakan mod senyap, dan boleh menyemak nilai pulangan setiap akses pangkalan data dengan lebih jelas.
Kod yang lengkap adalah seperti berikut:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/5 0005 * Time: 上午 9:23 */ header("Content-Type:text/html;charset=utf-8"); //mysql:host:localhost;port=3306;dbname=php;charset=utf-8 $dbms='mysql'; $host='localhost'; $port='3306'; $dbname='php'; $charset='utf-8'; //用户名与密码 $user='root'; $pwd='root'; $dsn="$dbms:host=$host;port=$port;dbname=$dbname;charset=$charset"; try{ $pdo=new PDO($dsn,$user,$pwd); //设置错误处理 // $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT); //0 默认模式 // $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); //1 警告处理模式 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//2 // $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ATTR_ERRMODE); //3 //预处理sql语句 // $stmt=$pdo->prepare("insert into book(name,author)values(?,?)"); $stmt=$pdo->prepare("select *from phpbook"); $stmt->execute(); //获取错误信息 $code=$stmt->errorCode(); $info=$stmt->errorInfo(); //输出相关信息 print_r("错误码:".$code."<br>"); print_r("错误信息:"); print_r($info); }catch (PDOException $exception){ echo $exception->getMessage().'<br>'; }
Paparan hasil berjalan:
bahagian seterusnya