PDOによるデータベースアクセス (4/7)
作成:2012-07-29 16:54
更新:2012-07-29 16:54
更新:2012-07-29 16:54
■PDOでテーブルデータを取得する
では、実際にデータベースにアクセスしてみましょう。まずは、テーブルに保管されているレコードを取り出す操作から行なってみます。
レコードのデータを取り出すには、SQLのクエリー(命令文)を直接実行するメソッドを利用するのが良いでしょう。これは「query」というもので、以下のように呼び出します。
では、先ほどのsampletableテーブルからレコードを取り出して一覧表示するサンプルを下に挙げておきましょう。ここでは、「index.php」というファイルとして用意しておきましょう。ここでは、$pdo->queryでselect * from sampletableを実行し、取得した結果をfetchで取り出して、テーブルにまとめていきます。
なお、最後に$pdo = null;という文がありますが、これは生成したPDOオブジェクトを開放するための処理です。PDOオブジェクトを代入した変数に明示的にnullを設定することで、データベースとの接続が切断され、リソースが開放されます。あるいは、unset関数で変数を開放しても同様の働きがされます。
レコードのデータを取り出すには、SQLのクエリー(命令文)を直接実行するメソッドを利用するのが良いでしょう。これは「query」というもので、以下のように呼び出します。
$変数 = $pdo->query( クエリー );引数に、実行するクエリーのテキストを指定して実行すると、実行結果が返されます。テーブルのデータをまとめて取得するのであれば、クエリーはざっと以下のようにすればよいでしょう。
select * from テーブル名このqueryメソッドの返り値は、「PDOStatement」というクラスのインスタンスです。これは「fetch」というメソッドを呼び出すことで、取得したレコードを順番に取り出していくことができます。ですから、繰り返しを使って必要なだけレコードを取り出し処理します。
while( $変数 = $pdostatement->fetch(取り出し方の指定 )){fetchの引数には、値を取り出すための値を用意します。通常は、PDO::FETCH_ASSOCを指定します。これは、それぞれのカラム名をキーに設定した連想配列の形で値を取り出すものです。後は取り出した連想配列から必要に応じて値を取り出し処理すればよいわけですね。
……取り出したレコードの処理をする……
}
では、先ほどのsampletableテーブルからレコードを取り出して一覧表示するサンプルを下に挙げておきましょう。ここでは、「index.php」というファイルとして用意しておきましょう。ここでは、$pdo->queryでselect * from sampletableを実行し、取得した結果をfetchで取り出して、テーブルにまとめていきます。
なお、最後に$pdo = null;という文がありますが、これは生成したPDOオブジェクトを開放するための処理です。PDOオブジェクトを代入した変数に明示的にnullを設定することで、データベースとの接続が切断され、リソースが開放されます。あるいは、unset関数で変数を開放しても同様の働きがされます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?php $result = ""; try { $pdo = new PDO("mysql:host=localhost;dbname=mysampledata;charset=utf8", "root",""); $statement = $pdo->query("select * from sampletable"); while($record = $statement->fetch(PDO::FETCH_ASSOC)){ $result .= "<tr>"; foreach($record as $column){ $result .= "<td>" . $column . "</td>"; } $result .= "</tr>"; } } catch(PDOException $e){ $result = "#ERR:" . $e->getMessage(); } $pdo = null; ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>sample page</title> <style> h1 { font-size:14pt; padding:5px; background-color:#AAFFFF; } table tr td { padding:5px; background-color:#DDFFCC; } </style> </head> <body> <h1>Hello PHP!</h1> <table> <?php echo $result; ?> </table> </body> </html>
※関連コンテンツ