ホームページ  >  記事  >  バックエンド開発  >  PHP データベース学習で PDO を使用してクエリ結果を取得するにはどうすればよいですか?

PHP データベース学習で PDO を使用してクエリ結果を取得するにはどうすればよいですか?

WBOY
WBOYオリジナル
2021-10-28 15:21:014149ブラウズ

前回の記事では『PHPデータベース学習:PDOを使ってSQL文を実行する方法とは? 」では、PDO を使用して SQL ステートメントを実行する方法に関する知識が詳しく紹介されています。この記事では、PHP が PDO を使用してクエリ結果を取得する方法について引き続き見ていきます。皆さんのお役に立てれば幸いです!

PHP データベース学習で PDO を使用してクエリ結果を取得するにはどうすればよいですか?

前回の記事では、PDO を使用して SQL ステートメントを実行する方法を学習しました。次に、PDO のデータ取得方法である PDO のデータ取得方法を見てみましょう。これは他のデータベース拡張機能と非常によく似ています。

SELECT クエリが正常に実行される限り、PDO オブジェクトの qurey() メソッドを使用するか、 prepare を使用するかにかかわらず、結果セット オブジェクトが生成されます。 () execute() およびその他のメソッドと組み合わせた前処理ステートメントは、SELECT クエリの実行時に結果セット オブジェクト PDOStatement を取得します。

PDOStatement クラスのメソッドを通じて SELECT ステートメントのクエリ結果を取得できます。次に、PDOStatement クラスで結果セット データを取得する一般的なメソッドをいくつか見てみましょう。

<strong><span style="font-size: 20px;">fetch()</span></strong> メソッド

fetch () このメソッドは、PDOStatement オブジェクトの結果セットから現在の行の内容を取得し、結果セット ポインターを次の行に移動できます。結果セットの最後に到達すると、FALSE を返します。このメソッドの構文形式は次のとおりです。

PDOStatement::fetch([int $fetch_style[, int $cursor_orientation = PDO::FETCH_ORI_NEXT[, int $cursor_offset = 0]]])

注意する必要があるのは、次のとおりです。

$fetch_style は、次の行の内容を制御するために使用されるオプションのパラメータを表します。発信者に返されました。このパラメータの値は、次に示すように、PDO::FETCH_* 一連の定数のいずれかである必要があります。

  • PDO::FETCH_ASSOC 連想配列を返すことを示します;

  • PDO::FETCH_BOTH (デフォルト) インデックス配列と連想配列を混合した配列を返すことを示します

  • PDO::FETCH_BOUND は、TRUE を返し、結果セットの値を PDOStatement::bindColumn() メソッドによってバインドされた PHP 変数に割り当てることを意味します

  • PDO::FETCH_OBJ は、属性名が結果セットの列名に対応する匿名オブジェクトを返すことを意味します。

  • PDO::FETCH_CLASS: 結果セット内の列名をクラス内の対応する属性名にマッピングして、要求されたクラスの新しいインスタンスを返します。

fetch_stylePDO::FETCH_CLASSTYPE が含まれる場合 (例: PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE)、クラス名は次のようにリストされます。最初の列 値によって決定されます;

$cursor Orientation はオプションのパラメータを表し、オブジェクトがスクロール可能なカーソルの場合にどの行を取得するかを決定するために使用されます。この値は、PDO::FETCH_ORI_* シリーズの定数の 1 つである必要があり、デフォルトは PDO::FETCH_ORI_NEXT です。

$offset はオプションのパラメータを表します。パラメータ $cursor_orientation が PDO::FETCH_ORI_ABS に設定されている場合、この値は、取得する結果セット。 ;パラメータ $cursor_orientation が PDO::FETCH_ORI_REL に設定されている場合、この値は PDOStatement::fetch( を呼び出す前に、カーソルを基準にしてフェッチする行の相対位置を指定します) )。

次に、例を通して fetch() メソッドを使用して SELECT ステートメントのクエリ結果を取得する方法を見てみましょう。例は次のとおりです。

<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = &#39;SELECT name,age,sex FROM user WHERE age = \&#39;12\&#39;&#39;;
        $res = $pdo -> query($sql);
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        while ($row = $res -> fetch(PDO::FETCH_ASSOC)){
            print_r($row);
        }
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>

出力結果:

PHP データベース学習で PDO を使用してクエリ結果を取得するにはどうすればよいですか?

これにより、PDOStatement オブジェクトの結果セットからの取得が完了します。 fetch() メソッド 現在の行の内容。 $offset はオプションのパラメータを表します。パラメータ $cursor_orientation PDO::FETCH_ORI_ABS に設定されている場合、この値は、その行の絶対行番号を指定します。取得する結果セット。 ;パラメータ $cursor_orientationPDO::FETCH_ORI_REL に設定されている場合、この値は # を呼び出す前にカーソルを基準にしてフェッチする行を指定します。 ##PDOStatement::fetch() 場所。

次に、fetchAll() メソッドのアプリケーションを見てみましょう。

<strong>fetchAll()<span style="font-size: 20px;"></span></strong> メソッド

##fetchAll ()

メソッドは上で紹介した fetch() メソッドに似ていますが、このメソッドを呼び出す必要があるのは 1 回だけで、結果セット内のすべての行を取得し、返された配列に割り当てることができます。このメソッドの構文形式は次のとおりです。 <pre class="brush:php;toolbar:false">PDOStatement::fetchAll([int $fetch_style[, mixed $fetch_argument[, array $ctor_args = array()]]])</pre> 注意すべき点は次のとおりです。


$fetch_style

は、制御に使用されるオプションのパラメータを表します。返された配列の内容。デフォルト値は PDO::FETCH_BOTH です。このパラメータの値は、fetch() メソッドの値と同じです。

$fetch_argument

このパラメータは、$fetch_style パラメータの値に応じて異なる意味を持ちます:

  • PDO::FETCH_COLUMN

    : 0 から始まるインデックス付きの指定された列を返します;

  • PDO::FETCH_CLASS:返回指定类的实例,映射每行的列到类中对应的属性名;

  • PDO::FETCH_FUNC:将每行的列作为参数传递给指定的函数,并返回调用函数后的结果。

$ctor_args   表示当 $fetch_style 参数为 PDO::FETCH_CLASS 时,自定义类的构造函数的参数。

接下来我们通过示例来看一下fetchAll() 方法的实际应用,示例如下:

<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo  = new PDO($dsn,$user,$pwd);
        $sql  = &#39;SELECT name,age,sex FROM user WHERE sex = \&#39;男\&#39;&#39;;
        $res  = $pdo -> query($sql);
        $data = $res -> fetchAll(PDO::FETCH_ASSOC);
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        print_r($data);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>

输出结果:

PHP データベース学習で PDO を使用してクエリ結果を取得するにはどうすればよいですか?

由此我们便通过使用 fetchAll() 方法,获取 SELECT 语句的查询结果。$ctor_args   表示当 $fetch_style 参数为 PDO::FETCH_CLASS 时,自定义类的构造函数的参数。

接下来我们看一下fetchColumn() 方法的使用。

<strong><span style="font-size: 20px;">fetchColumn() </span></strong>方法

fetchColumn() 方法可以获取结果集中当前行指定字段的值,其语法格式如下:

PDOStatement::fetchColumn([int $column_number = 0])

其中需要注意的是:

参数 $column_number表示的是想从行里取回的列的索引数字。

如果该参数没有取值,也就是如果没有提供值,那么则会从第一列开始获取。

接下来我们通过示例来看一下fetchColumn() 方法的使用,示例如下:

<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = &#39;SELECT name,age,sex FROM user&#39;;
        $res = $pdo -> query($sql);
        echo &#39;当前行第一列的值为:&#39;.$res -> fetchColumn().&#39;<br>&#39;;
        echo &#39;当前行第三列的值为:&#39;.$res -> fetchColumn(2).&#39;<br>&#39;;
        echo &#39;当前行第二列的值为:&#39;.$res -> fetchColumn(1).&#39;<br>&#39;;
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>

输出结果:

PHP データベース学習で PDO を使用してクエリ結果を取得するにはどうすればよいですか?

由此我们便通过使用 fetchColumn() 方法,获取指定字段的值。

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

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。