2009/12/09

データベースを使うPHPプログラム (2)PDOを使ったPHPプログラムを書く


データベースを使うPHPプログラム (1)からの続き



前回の手順で下のようなテーブルがデータベース内に作成できました。

messagesテーブルに登録したデータ
id
項目番号
message
メッセージ
1やあ。
2DBのメッセージ
3へい!へい!


今回はこのテーブルからデータを取得して表示するPHPプログラムを作成します。


1.PHPプログラムの作成

下のようなPHPのコードを入力します。

<?php

$dbName = 'php_db'; // データベース名
$dbUser = 'php_db'; // ユーザ名
$dbPass = 'php_db'; // パスワード

// データベースへ接続する
try{
 // MySQLへ接続
 $pdo = new PDO(
  'mysql:host=localhost; dbname='.$dbName,
  $dbUser,
  $dbPass,
  array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET CHARACTER SET utf8;')
 );
}
catch(PDOException $e){
 // エラー
 print 'error!<BR />';
 die;
}

// データベースからデータを取得
$query = $pdo->prepare('select * from messages'); // データ取得のSQL文
if( !$query->execute() ){ // SQL文を実行
 // エラー
 print 'execute error!<BR />';
 die;
}

// データベースから取得したデータを表示
while( $row = $query->fetch(PDO::FETCH_OBJ) ){ //データベースから
 print $row->id . ':'; // idフィールドの内容を表示
 print $row->message . '<BR />'; // messageフィールドの内容を表示
}

?>





最初はデータベースへの接続をしています。


$dbName = 'php_db'; // データベース名
$dbUser = 'php_db'; // ユーザ名
$dbPass = 'php_db'; // パスワード

// データベースへ接続する
try{
 // MySQLへ接続
 $pdo = new PDO(
  'mysql:host=localhost; dbname='.$dbName,
  $dbUser,
  $dbPass,
  array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET CHARACTER SET utf8;')
 );
}
catch(PDOException $e){
 // エラー
 print 'error!<BR />';
 die;
}
PDOのコンストラクタにデータベース名、ユーザ名、パスワードを渡すと、データベースへ接続することができます。



次に、データベースからデータを取得しています。
// データベースからデータを取得
$query = $pdo->prepare('select * from messages'); // データ取得のSQL文
if( !$query->execute() ){ // SQL文を実行
 // エラー
 print 'execute error!<BR />';
 die;
}
データベースへの接続オブジェクト($pdo)にSQL文を渡して、データベース操作用のオブジェクト($query)を作っています。
データベース操作用オブジェクトのexecute()メソッドでデータの取得を行っています。



最後はデータベースから取得したデータを表示しています。
// データベースから取得したデータを表示
while( $row = $query->fetch(PDO::FETCH_OBJ) ){ //データベースから取得したデータを1つ持ってくる
 print $row->id . ':'; // idフィールドの内容を表示
 print $row->message . '<BR />'; // messageフィールドの内容を表示
}

?>
データベースから取得した結果を使った処理をするには、fetchメソッドを使います。
fetchメソッドの引数にPDO::FETCH_OBJを渡すと、オブジェクトとしてデータを取得できます。
このオブジェクトは、フィールド名がプロパティになるので、idプロパティの値とmessageプロパティの値をprintで表示しています。



実行結果



参考


0 件のコメント:

コメントを投稿