これまでP HP から MySQL に接続するときは PEAR の MDB2 を使っていたのですが、PEAR がインストールされていない環境でデータベースに接続するには何か方法はないのかと思い調べました。すると PDO クラスという便利そうなものを見つけました。
PDO クラスを使用すれば、ライブラリを読み込むこともなくいきなりデータベースに接続する機能を利用できます。ただし、PDO クラスが利用できるように設定されている必要があるので予め動作させたいサーバーで動かしてみる必要があります。ServerQueen の共有サーバー、ロリポップの共有サーバーで動きましたので余程古い環境でなければ大丈夫かもしれません。
下記のコードは MySQL に接続し、data テーブルから全てのデータを取り出したあと、url フィールドの内容を1行ごとに改行して表示します。
1 2 3 4 5 6 7 8 9 |
<?php $pdo = new PDO('mysql:host=HOSTNAME; dbname=DATABASENAME', 'USERNAME', 'PASSWORD'); $results = $pdo->query('SELECT * FROM data'); while($row = $results->fetch(PDO::FETCH_ASSOC)){ echo $row['url'] . '<br />'; } $pdo = null; ?> |
2行目
PDOクラスのコンストラクタに、データベースのホスト名(HOSTNAMEのところ。多く場合localhost。)、データベース名(DATABASENAMEのところ)、ユーザー名(USERNAMEのところ)、パスワード(PASSWORDのところ)を渡してインスタンスを作成します。
3行目
queryメソッドを使うとSQLを送信できます。問い合わせの結果がオブジェクトとして返ってきますので、$resultsに代入します。
4行目
結果として受けとったオブジェクトのfetchメソッドを使うとデータを1行ごとに取り出すことができます。fetchメソッドに引数としてPDO::FETCH_ASSOCを渡すと、データベースのフィールド名をキーとした連想配列が返されるようになります。
5行目
従って$rowには連想配列でデータが保存されていますので、urlフィールドのデータにアクセスしたい場合は、$row[‘url’]とします。
7行目
データベースへの接続を閉じるには、接続時に作成したインスタンスの$pdoにnullを代入するか、unset($pdo)として削除をすれば閉じることができます。