PHPとデータベース(MySQL)の接続方法について解説します。
事前準備
PHPの設定
Windows環境でPDOを利用するために、「php.ini」の設定が必要です。
変更前 | ;extension=pdo_mysql |
変更後 | extension=pdo_mysql |
修正後はIISの再起動をおこない、設定を反映させます。
動作確認
phpinfo()を出力するページを実行してみます。

上記のようにPDO、pdo_mysqlの表示が出ていれば完了です。
PHPとMySQLの接続
PDO(PHP Data Objects
)は、PHPからデータベースのアクセスを抽象化してくれるもので、MySQLに限らず、postgresqlやsqliteなど
に対応しているため、他のデータベースへの移行が容易になります。
ここでは、PDOを利用した実装を紹介します。
define('DB_USERNAME', 'USERNAME');
define('DB_PASSWORD', 'PASSWORD');
define('DSN', 'mysql:host=localhost; dbname=DBNAME; charset=utf8');
// DBへ接続
try{
$dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD);
// クエリの実行
$query = "SELECT * FROM TABLE_NAME";
$stmt = $dbh->query($query);
}catch(PDOException $e){
print("データベースの接続に失敗しました".$e->getMessage());
}
// 接続を閉じる
$dbh = null;
MySQLからデータ取得
SELECT文でデータを取得します。
SELECT フィールド名 FROM テーブル名;
<table border="1">
<tr>
<th>
AAA
</th>
<th>
BBB
</th>
<th>
CCC
</th>
</tr>
<?php
define('DB_USERNAME', 'USERNAME');
define('DB_PASSWORD', 'PASSWORD');
define('DSN', 'mysql:host=localhost; dbname=DBNAME; charset=utf8');
try {
// 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする
$dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD);
$sql = "SELECT * FROM TABLE_NAME";
$stmt = $dbh->query($sql);
foreach($stmt as $record){
echo "<tr>
<td>{$record['AAA']}</td>
<td>{$record['BBB']}</td>
<td>{$record['CCC']}</td>
</tr>";
}
} catch(PDOException $e) {
echo "エラーメッセージ : " . $e -> getMessage();
}
?>
</table>
MySQLへデータ登録
INSERT文でデータを追加します。
INSERT INTO テーブル名 (フィールド1 [ , フィールド2 , フィールド3 … ]) VALUES (フィールド1の値 [ , フィールド2の値 , フィールド3の値 …] );
<?php
define('DB_USERNAME', 'USERNAME');
define('DB_PASSWORD', 'PASSWORD');
define('DSN', 'mysql:host=localhost; dbname=DBNAME; charset=utf8');
try {
// 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする
$dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD);
$sql = "INSERT INTO TABLE_NAM (AAA,BBB,CCC) VALUES ('aaa','bbb','ccc')";
$stmt = $dbh->query($sql);
} catch(PDOException $e) {
echo "エラーメッセージ : " . $e -> getMessage();
}
?>
MySQLのデータ削除
DELETE文でデータを削除します。
DELETE FROM テーブル名 WHERE 条件;
<?php
define('DB_USERNAME', 'USERNAME');
define('DB_PASSWORD', 'PASSWORD');
define('DSN', 'mysql:host=localhost; dbname=DBNAME; charset=utf8');
try {
// 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする
$dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD);
$sql = "DELETE FROM TABLE_NAM WHERE AAA = 'aaa'";
$stmt = $dbh->query($sql);
} catch(PDOException $e) {
echo "エラーメッセージ : " . $e -> getMessage();
}
?>
コメント