昨日の記事phpプログラミング入門-データベースにアクセスする(mysql_connect)を使用のやり方では、セキュリティに脆弱性があったり、データベースの種類によって少し使う関数が変わってきてしまうため現在は推奨されていません。

そこで今日は現在推奨されているPDOを使ったやり方で昨日の記事と同じような事をやってみようと思います。

下準備

昨日と同じです。
データベースにアクセス⇒データベースの情報を表示⇒データベースに新しい情報を追加
という流れでチャレンジしてみます。

データベースにアクセス

php

<?php
//データベースにアクセスして選択する
$user = '****';
$pass = '*****';
try {
    $dbh = new PDO('mysql:host=localhost;dbname=for_practice', $user, $pass);
if($dbh){ 
	echo "データベースへの接続に成功しました。";
}else{
	echo "データベースへの接続に失敗しました。";
}
} catch (PDOException $e) {
    print "エラー!: " . $e->getMessage() . "<br/>";
    die();
}    
?>

解説

まず、変数にphpMyAdminのユーザー名とパスを格納します。
次にtryとcatchについて説明していきます。
try節の中には例外発生の可能性のあるコードを記述し、catchは(例外クラス名 変数){例外発生時の処理}という具合に記述をします。
もしも例外が発生しなかった場合はcatchの記述は無視されて次の処理に進んでいきます。
die();はそこでphpの処理を終了するという関数です。
つまり今回の場合もしもエラー!と表示されたら、そこで処理を終了させるという事になります。

データを表示する

php

<?php
//データベースからデータを出力
   $sql = 'select * from for_practice';
    $stmt = $dbh->query($sql);
    $stmt->execute();
    
    while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
       print($result['id'].'<br>');
       print($result['name'].'<br>');
       print($result['price'].'<br>');
}
?>

解説

prepareメソッド(prepare()の部分)はqueryメソッドと似たような役割をはたしますが、SQL文の基本部分が同じで値だけ異なるような場合(例えば同じテーブルに値だけ変えて何回もデータを挿入するような場合)に効率よく行えます。
ここに関してはある意味ではテンプレートのような記述なのかも知れません。

fetch()は結果を取得して次の行をどのような形式で取得するか、といったような意味です。

最終更新:2015年08月18日 23:08