hitoshop14 @ ウィキ
PDO接続フェッチ利用
最終更新:
hitoshop
PDO接続フェッチ利用
- フェッチとは、取得した結果セットからデータを取り出すことをいう
- PDO関数で用意されたフェッチメソッドは3種類
PDO関数フェッチメソッド
メソッド | 概要 |
fetch() | 結果セットから次の行を取得 |
fetchAll() | 結果セットからすべての行を含むデータ取得 |
fetchColumn() | 結果セットの最初のフィールドからデータを取得 |
フェッチモード
定数 | 概要 | コード例 |
PDO::FETCH_NUM | 一般配列 | $row[0] |
PDO::FETCH_ASSOC | 連想配列 | $row['name'] |
PDO::FETCH_OBJ | オブジェクト | $row->name |
PDO::FETCH_BOTH | 通常/連想配列(デフォルト) | $row[0] / $row['id'] |
PDO::FETCH_BOUND | 個別にバインド | $name |
PDO::FETCH_CLASS | 指定クラス | $row->name |
PDO::FETCH_INTO | 指定インスタンスに対す | $row->name |
結果セットの取得
result.php |
<?php $dsn = 'mysql:dbname=testDB;host:localhost'; //testDBは任意 $user = 'root'; //DB接続ユーザ名 $password = ''; //DB接続用パスワード try{ $db = new PDO($dsn, $user, $password); $rs = $db->query('SELECT * FROM member ORDER BY id ASC'); print('<table border="1">'); print('<tr><th>name</th><th>address</th><th>tel</th><th>mail</th></tr>'); while ($row = $rs->fetch(PDO::FETCH_ASSOC)) { ?> <tr> <td><?php print($row['name']); ?></td> <td><?php print($row['address']); ?></td> <td><?php print($row['tel']); ?></td> <td><?php print($row['mail']); ?></td> </tr> <?php } print('</talbe>'); } catch (PDOException $e){ print('エラー発生 : ' . $e->getMessage()); } ?> |
fetchAllの使用例
fetchAll.php |
<?php $dsn = 'mysql:dbname=testDB;host:localhost'; //testDBは任意 $user = 'root'; //DB接続ユーザ名 $password = ''; //DB接続用パスワード try{ $db = new PDO($dsn, $user, $password); $rs = $db->query('SELECT * FROM member ORDER BY id ASC'); $data = $rs->fetchAll(); print('<ul>'); foreatch ($data as $value) { print('<li>'); print($value['name'] . ' : ' . $value['address'] . ' : ' . $value['tel']); print('</li>'); } print('</ul>'); } catch (PDOException $e){ print('エラー発生 : ' . $e->getMessage()); } ?> |
トランザクション処理
◆トランザクション処理とは、関連する複数の処理をグループ化したもので、例えば、フォーム上で入力された値を、複数のテーブルに任意の値をインサート処理したりする場合に使用します。
◆例えば、1つめのデータ処理に成功し、2つめのデータ処理が失敗した場合にデータの不整合が起きます。その場合には、1つめのデータ処理結果も無効にします
transaction.php |
<?php |
◆PDOには専用のトランザクション処理用関数があるので、それを使用するのも良いでしょう
上記で使用している例 | 専用関数例 |
$db->exec('BEGIN'); |
$db->beginTransaction(); |
$db->exec('COMMIT'); | $db->commit(); |
$db->exec('ROLLBACK'); | $db->roolback(); |