様々なデータベースとの接続を一元化するには、拡張モジュールであるPDO(PHP Data Objects)を利用します。PDOはPHPとデータベースとの間において抽象化レイヤとしての役割を持つので、データベースが変わっても同じ関数を利用することができます(PHP5.1以降)。
スポンサーリンク
ちなみに、PHPがMySQLと接続する方法は主に下記の4つあります。
mysqli拡張モジュール(MySQLi関数)
PDO(PHP Data Objects)
PEARパッケージ(MDB2が有名だが実質メンテナンスはストップしている)
フレームワーク(CakePHP等)の独自機能
mysqli拡張モジュールについては下記の関連ページへどうぞ。
MySQLにつないでデータを追加する[INSERT][mysqli]
今回はPDOを利用して、idと名前(name)が登録されてあるMySQLのnameテーブルを表示するページ(pdo_select.php)を作成します。
手順
まずはデータベースを用意します。MySQLにつないだら、sample01データベースを生成し、その中にnameテーブルを作成します。
sample01データベースの作成
1 |
CREATE DATABASE sample01; |
次にidとnameをカラムとして持つ下記のような構造のnameテーブルを作成します。
1 2 3 4 5 6 |
USE sample01; CREATE TABLE name ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name TEXT NOT NULL )DEFAULT CHARACTER SET=utf8; |
上記で作成した、nameテーブルにあらかじめデータを登録しておきます。
1 |
INSERT INTO name (name) VALUES ("太郎"),("花子"),("ウェブの葉"); |
次にnameテーブル内のデータをPDOを利用して表示させます。
pdo_select.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<?php header("Content-type: text/html; charset=utf-8"); $dsn = 'mysql:host=◯◯◯;dbname=sample01;charset=utf8'; $user = '◯◯◯'; $password = '◯◯◯'; try{ $dbh = new PDO($dsn, $user, $password); echo "接続成功"; $sql = 'SELECT * FROM name'; $statement = $dbh -> query($sql); //レコード件数取得 $row_count = $statement->rowCount(); while($row = $statement->fetch()){ $rows[] = $row; } /* foreach ($statement as $row) { $rows[] = $row; } */ //データベース接続切断 $dbh = null; }catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } ?> <!DOCTYPE html> <html> <head> <title>nameテーブル表示</title> <meta charset="utf-8"> </head> <body> <h1>nameテーブル表示</h1> レコード件数:<?php echo $row_count; ?> <table border='1'> <tr><td>id</td><td>name</td></tr> <?php foreach($rows as $row){ ?> <tr> <td><?php echo $row['id']; ?></td> <td><?php echo htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <?php } ?> </table> </body> </html> |
4〜6行目
環境に合わせて適当な値を入力して下さい。4行目でmysqlを指定しています。
22〜24行目
foreachを利用しレコードを取得する方法です。
参照ページ
PHPマニュアル