Utilisez le mode exception-PDO::ERRMODE_EXCEPTION (troisième méthode pour capturer les erreurs dans les instructions SQL dans PDO)

黄舟
Libérer: 2023-03-07 17:32:02
original
3361 Les gens l'ont consulté

Utiliser le mode d'exception -PDO::ERRMODE_EXCEPTION (méthode 3 de capture des erreurs dans les instructions SQL dans PDO)

Le mode d'exception créera une PDOException et définira l'attribut erorCode, qui peut le code d'exécution est encapsulé dans une instruction try{...}catch{...}. Les exceptions non interceptées entraîneront l'interruption du script et une trace de pile sera affichée pour permettre à l'utilisateur de comprendre où le problème s'est produit !

Dans les deux premiers articles "Utilisez le mode par défaut-PDO::ERRMODE_SILENT (Méthode 1 pour capturer les erreurs dans les instructions SQL dans PDO)" "Utilisez le mode d'avertissement-PDO :: ERRMODE_WARNING (Méthode 2 pour capturer les erreurs dans les instructions SQL dans PDO) " Nous avons introduit deux méthodes, le mode par défaut et le mode exception, nous allons donc aujourd'hui introduire la troisième méthode pour capturer les erreurs dans les instructions SQL dans PDO~

Une autre chose très utile à propos du mode exception est que vous pouvez créer votre propre gestion des erreurs plus clairement que les avertissements de style PHP traditionnels, et par rapport au mode silencieux et en vérifiant explicitement la valeur de retour de chaque appel de base de données, les modèles d'exceptions nécessitent moins de code. /nidification.

En plus de définir le code d'erreur, PDO lancera également une classe d'exception PDOException et définira ses propriétés pour refléter le code d'erreur et les informations d'erreur. Ce paramètre est également très utile lors du débogage car il zoome efficacement sur le point du script où l'erreur se produit, permettant d'identifier très rapidement les zones potentielles problématiques du code ! (Rappelez-vous : si une exception entraîne la fin du script, la transaction est automatiquement annulée).

Lorsque vous effectuez l'opération de suppression de données dans la base de données, définissez-la en mode d'exception et écrivez une instruction SQL incorrecte pour comprendre la différence entre le mode d'exception, le mode d'avertissement et le mode par défaut.

Les étapes spécifiques sont les suivantes :

(1) Créez un fichier php, connectez-vous à la base de données, exécutez l'opération de requête SELECT via les méthodes préparer() et exécuter() de l'opération planifiée. traitement, et utilisez l'instruction while et fetch La méthode () termine la sortie en boucle des données et définit le lien hypertexte de suppression pour se connecter à un autre fichier php. Le paramètre transmis est la valeur ID des données. Le code est le suivant :

<?php
header("Content-Type:text/html; charset=utf-8");    //设置页面的编码格式
$dbms = "mysql";                                  // 数据库的类型
$dbName ="php_cn";                                //使用的数据库名称
$user = "root";                                   //使用的数据库用户名
$pwd = "root";                                    //使用的数据库密码
$host = "localhost";                              //使用的主机名称
$dsn  = "$dbms:host=$host;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);  //设置为警告模式
$query="select * from user";//需要执行的sql语句
$res=$pdo->prepare($query);//准备查询语句
$res->execute();            //执行查询语句,并返回结果集
?>
<table border="1" width="500">
    <tr>
        <td height="22" align="center" valign="middle">id</td>
        <td height="22" align="center" valign="middle">用户名</td>
        <td height="22" align="center" valign="middle">密码</td>
        <td height="22" align="center" valign="middle">操作</td>
    </tr>
    <?php
    while($result=$res->fetch(PDO::FETCH_ASSOC)){         // 循环输出查询结果集,并且设置结果集为关联数据形式。
        ?>
        <tr>
            <td height="22" align="center" valign="middle"><?php echo $result["id"];?></td>
            <td height="22" align="center" valign="middle"><?php echo $result["username"];?></td>
            <td height="22" align="center" valign="middle"><?php echo $result["password"];?></td>
            <td height="22" align="center" valign="middle"><a href="2.php?code_id=<?php echo $result[&#39;id&#39;];?>">删除</td>
        </tr>
        <?php
    }
    }catch(Exception $e){
        die("Error!:".$e->getMessage().&#39;<br>&#39;);
    }
    ?>
</table>
Copier après la connexion

Les résultats de sortie sont les suivants :

Utilisez le mode exception-PDO::ERRMODE_EXCEPTION (troisième méthode pour capturer les erreurs dans les instructions SQL dans PDO)

(2) Créez un autre fichier, obtenez la valeur d'ID de données du lien hypertexte, connectez-vous au base de données, définissez-la en mode exception via la méthode setAttribute(), définissez l'instruction DELETE et supprimez une donnée incorrecte dans la table de données, et les informations d'erreur sont obtenues via l'instruction try{...}catch{...} . Le code spécifique est le suivant :

<?php
$id = $_GET[&#39;code_id&#39;];
if($id){
header("Content-Type:text/html; charset=utf-8");    //设置页面的编码格式
$dbms = "mysql";                                  // 数据库的类型
$dbName ="php_cn";                                //使用的数据库名称
$user = "root";                                   //使用的数据库用户名
$pwd = "root";                                    //使用的数据库密码
$host = "localhost";                              //使用的主机名称
$dsn  = "$dbms:host=$host;dbname=$dbName";
try{
    $pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);  //设置为警告模式
    $query="delete * from user_12 where id = $id";//需要执行的sql语句
    $res=$pdo->prepare($query);//准备查询语句
    $res ->bindParam(&#39;:id&#39;,$_GET[&#39;code_id&#39;]);     //绑定更新数据
    $res->execute();            //执行查询语句,并返回结果集
}catch (PDOException $e){
    echo "PDO Exception Caught";
    echo &#39;Error with the database:<br>&#39;;
    echo &#39;SQL Query;&#39;.$query;
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    echo "Error:".$e -> getMessage()."<br>";
    echo "Code:".$e ->getCode()."<br>";
    echo "File:".$e ->getFile()."<br>";
    echo "Line:".$e ->getLine()."<br>";
    echo "Trace:".$e ->getTraceAsString()."<br>";
    echo  "
Copier après la connexion
"; } }

Remarque :

Dans le code ci-dessus, lors de la définition. l'instruction de suppression DELETE, nous avons délibérément utilisé le mauvais nom de table de données user_12 (le nom correct de la table de données est : user ), ceci est écrit à des fins de test !

Après le passage en mode exception, la mauvaise instruction SQL est exécutée et le résultat de sortie est le suivant :

Utilisez le mode exception-PDO::ERRMODE_EXCEPTION (troisième méthode pour capturer les erreurs dans les instructions SQL dans PDO)

À propos de la capture Instructions SQL dans PDO Nous avons fini de présenter ici les trois méthodes de gestion des erreurs. Je pense que tout le monde a une certaine compréhension des erreurs lors de la capture des instructions SQL dans PDO. Dans le prochain article, nous continuerons à vous présenter les méthodes de gestion des erreurs dans PDO. PDO. Pour plus de détails, veuillez lire « Méthode 1 de gestion des erreurs dans PDO - méthode errorCode() 》 !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!