LoginSignup
0
0

PDO (PHP Data Objects)・3回目

Posted at

はじめに

PDOについてまとめる・3回目

結果セットの取得

結果セットとは、SQLのSELECT命令によって、一個または複数のテーブルから取り出されたレコード群を保持するために、メモリ上に用意された仮想テーブルのことを言う。

以下はbookテーブルの内容をテーブルに整形&表示するコード。

result.php
<?php
require_once '../DbManager.php';
require_once '../Encode.php';
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>結果セット</title>
</head>

<body>
    <table>
        <thead>
            <tr>
                <th>ISBNコード</th>
                <th>署名</th>
                <th>価格</th>
                <th>出版社</th>
                <th>刊行日</th>
            </tr>
        </thead>
        <tbody>
            <?php
            try {
                $db = getDb();
                $stt = $db->query('SELECT * FROM book ORDER BY published DESC');
                while ($row = $stt->fetch(PDO::FETCH_ASSOC)) {
            ?>
                    <tr>
                        <td><?= e($row['isbn']) ?></td>
                        <td><?= e($row['title']) ?></td>
                        <td><?= e($row['price']) ?></td>
                        <td><?= e($row['publish']) ?></td>
                        <td><?= e($row['published']) ?></td>
                    </tr>
            <?php
                }
            } catch (PDOException $e) {
                print "エラーメッセージ:{$e->getMessage()}";
            }
            ?>
        </tbody>
    </table>
</body>

</html>
DbManager.php
<?php
function getDb(): PDO
{
    $dsn = 'mysql:dbname=selfphp; host=127.0.0.1; charset=utf8';
    $usr = 'selusr';
    $passwd = 'selfpass';

    $db = new PDO($dsn, $usr, $passwd);
    return $db;
}

レコードポインター

レコードポインターとは、現在読み込み可能なレコードを表す内部的な目印のこと。
executeメソッドによって結果セットが生成された直後のタイミングで、レコードポインターは先頭行の直前を示している。PDOStatementオブジェクトでは、レコードポインターを次のレコードに移動しながら、移動した先のレコードを読み込むためにfetchメソッドを使う。

fetchメソッド

PDOStatement::fetch([int $style = PDO::FETCH_BOTH]) : mixed

$style: フェッチモード

フェッチモードとは、結果セットから取りだしたデータをどのような形式の変数に格納するかを表すパラメーター。
result.phpではPDO::FETCH_ASSOCを指定することで連想配列の形式で変数に格納している。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0