PHP データベース学習の PDO でエラーを処理するにはどうすればよいですか?

WBOY
リリース: 2023-03-13 14:54:01
オリジナル
2208 人が閲覧しました

前回の記事では「PHPデータベース学習でPDOを使ってクエリ結果を取得する方法」についてお届けしました。 」では、PDO を使用してクエリ結果を取得する方法に関する関連知識を詳しく紹介しています。この記事では、PHP で PDO エラーを処理する方法を見てみましょう。皆様のお役に立てれば幸いです。

PHP データベース学習の PDO でエラーを処理するにはどうすればよいですか?

前回の学習では、PDO を通じてクエリ結果を取得する方法を学習しました。次に、PDO エラー処理について学習する必要があります。PDO には 2 つの取得方法があります。プログラム内のエラー情報メソッドは、errorCode() メソッドと errorInfo() メソッドです。次に、これら 2 つの方法の応用例を見てみましょう。

errorCode() メソッドと errorInfo() メソッドがエラーを処理する方法を理解する前に、まず PDO のエラー処理モードを見てみましょう。

PDO エラー処理モード

PDO には 3 つの異なるエラー処理モードが用意されており、さまざまなスタイルに対応できるだけでなく、プログラミングによって、拡張機能がエラーを処理する方法を調整することもできます。次に、これら 3 つの異なるエラー処理方法を紹介します。

  • <span style="font-size: 16px;">PDO::ERRMODE_SILENT<strong></strong></span><span style="font-size: 16px;"><strong></strong></span>

#PDO::ERRMODE_SILENT はデフォルト モードを表します。この場合、エラーが発生すると、PDO はエラー コードを設定するだけで、他の操作は実行されません。 2 つのメソッド PDO::errorCode() PDO::errorInfo() を使用して、ステートメントをチェックし、データベース オブジェクトをチェックします。

注意する必要があるのは、ステートメント オブジェクトの呼び出しによってエラーが発生した場合、このオブジェクトの PDOStatement::errorCode() メソッドまたは PDOStatement::errorInfo() メソッドを呼び出すことができるということです。データベース オブジェクトの呼び出しによってエラーが発生した場合は、データベース オブジェクトに対して PDOStatement::errorCode() メソッドまたは PDOStatement::errorInfo() メソッドを呼び出すことができます。


  • PDO::ERRMODE_WARNING <span style="font-size: 16px;"><strong></strong></span><span style="font-size: 16px;"></span>

    #PDO::ERRMODE_WARNING モードでは、エラー コードを設定できます。もちろん、エラー コードの設定に加えて、PDO はメッセージも送信します。このメッセージは、非常に伝統的な E_WARNING メッセージです。デバッグやテストが必要なとき、プログラムを中断するのではなく、何が問題だったのかを突き止めたいと考えます。 PDO::ERRMODE_WARNING このモードの出番です


  • ##PDO::ERRMODE_EXCEPTION

    <span style="font-size: 16px;"> <strong></strong></span>#PDO::ERRMODE_EXCEPTION モードではエラー コードも設定できます。一見してエラー コードを設定することに加えて、PDO は PDOException 例外クラスをスローし、そのプロパティをエラー コードを反映するように設定することもできます。エラーメッセージ。 PDO::ERRMODE_EXCEPTION モードは、デバッグ時にも非常に便利で、スクリプト内のエラーが発生した箇所を効果的に拡大するため、コード内の潜在的な問題のある領域を迅速に指摘できます。

  • PDO は
SQL-92 SQLSTATE

を使用してエラー コード文字列を標準化し、さまざまな PDO ドライバーがネイティブ コードを適切な SQLSTATE コードにマッピングする役割を果たします。
PDO::errorCode()

このメソッドは、単一の

SQLSTATE コードを返します。 このエラーに関する詳細情報が必要な場合、PDO には、SQLSTATE コード、特定のドライバー エラー コード、およびエラーを返す PDO::errorInfo() メソッドも用意されています。ドライバーの文字列の配列。

例外モードのもう 1 つの非常に便利な効果は、従来の PHP スタイルの警告よりも明確に独自のエラー処理を構築できることです。サイレント モードや各データベース呼び出し値の戻り値を明示的にチェックするのと比較して、例外パターンでは次のことが必要です。コード/ネストが少なくなります。

次に、例を通じて PDO インスタンスの作成とエラー モードの設定を見てみましょう。例は次のとおりです:

<?php
    $dsn  = &#39;mysql:dbname=test;host=127.0.0.1&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try {
        $pdo = new PDO($dsn, $user, $pwd);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        echo &#39;Connection failed: &#39; . $e->getMessage();
    }
?>
ログイン後にコピー

上記の例では、エラー モードは
PDO::setAttribute()

メソッドによって設定されています。この方法でエラー モードを設定することに加えて、 PDO インスタンスの作成時に設定することもできます。エラー モード

例は次のとおりです:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$pdo = new PDO($dsn, $user, $pwd, array(PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_WARNING));</pre><div class="contentsignin">ログイン後にコピー</div></div>上記は、PDO の 3 つのエラー処理モードです。 PDO::errorCode() メソッドを見てください。

#PDO::errorCode()

## メソッド <strong><span style="font-size: 20px;"></span></strong>PDO::errorCode() このメソッドは主に、データベース ハンドルの操作時に発生するエラー コードを取得するために使用されます。このエラー コードは SQLSTATE コードと呼ばれます。

PDO::errorCode() 方法可以返回一个 SQLSTATE,一个由 5 个字母或数字组成的在 ANSI SQL 标准中定义的标识符。 简单可以理解成,一个 SQLSTATE 由前面两个字符的类值和后面三个字符的子类值组成。

接下来我们通过示例来看一下通过 PDO 连接数据库,并通过 errorCode() 方法获取错误代码。

示例如下:

<?php
    $dsn  = &#39;mysql:dbname=test;host=127.0.0.1&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try {
        $pdo = new PDO($dsn, $user, $pwd);
        $sql = &#39;select * from user&#39;;
        $res = $pdo -> query($sql);
        echo &#39;errorCode 为:&#39;.$pdo -> errorCode().&#39;<br>&#39;;
        foreach ($res as $key => $value) {
            echo &#39;序号:&#39;.$value[&#39;id&#39;].&#39;; 姓名:&#39;.$value[&#39;name&#39;].&#39;; 年龄:&#39;.$value[&#39;age&#39;].&#39;; 性别:&#39;.$value[&#39;sex&#39;].&#39;<br>&#39;;
        }
    } catch (PDOException $e) {
        echo &#39;Connection failed: &#39; . $e->getMessage();
    }
?>
ログイン後にコピー

输出结果:

PHP データベース学習の PDO でエラーを処理するにはどうすればよいですか?

上述结果便是通过 errorCode() 方法获取错误代码。接下来我们看一下最后一种方法PDO::errorInfo() 方法。

<strong><span style="max-width:90%">PDO::errorInfo() </span></strong>方法

PDO::errorInfo() 方法与PDO::errorCode() 方法一样都是用于获取操作数据库句柄时所发生的错误信息。

不同的是errorInfo() 方法的返回值为一个数组,它包含了相关的错误信息。

接下来我们通过示例来看一下使用 PDO 中的 query 方法完成数据查询操作,并通过 errorInfo() 方法获取错误信息。

示例如下:

<?php
    $dsn  = &#39;mysql:dbname=test;host=127.0.0.1&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try {
        $pdo = new PDO($dsn, $user, $pwd);
        // $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = &#39;select * from userr&#39;;
        $res = $pdo -> query($sql);
        echo &#39;errorInfo 为:<br>&#39;;
        print_r($pdo -> errorInfo());
    } catch (PDOException $e) {
        echo &#39;Connection failed: &#39; . $e->getMessage();
    }
?>
ログイン後にコピー

上述示例中,我们查询了一个不存在的数据库,输出结果:

PHP データベース学習の PDO でエラーを処理するにはどうすればよいですか?

其中我们需要注意的是:PDO 和 PDOStatement 对象中都有 errorCode() 和 errorInfo() 方法,如果没有任何错误,errorCode() 返回的是 00000;否则就会返回一些错误代码。而 errorInfo() 返回的是一个数组,包括 PHP 定义的错误代码和 MySQL 的错误代码及错误信息。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上がPHP データベース学習の PDO でエラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート