ウェブ、ショウジン

PEAR::DBを使ってMySQLを操作する

2009-1-31
Category
MySQL PHP

PEARライブラリのパッケージ「PEAR::DB」を使ってMySQLを操作してみる。

PEAR::DBをインストール

Macintosh:~ showjin$ sudo pear install DB
Password:
WARNING: "pear/DB" is deprecated in favor of "pear/MDB2"
downloading DB-1.7.13.tgz ...
Starting to download DB-1.7.13.tgz (132,246 bytes)
.....................done: 132,246 bytes
install ok: channel://pear.php.net/DB-1.7.13

接続してみる。

<?php
// DBライブラリを読み込む
require_once("DB.php");

// DBとの接続情報
// dbuserがこのDBのユーザ名、hogeがそのパスワード、localhostはホスト名、phplessonは対象データベース名
$dsn = "mysql://dbuser:hoge@localhost/phplesson";

$db = DB::connect($dsn);
if (DB::isError($db)) {
    print "接続に失敗しました";
    exit;
} else {
    print "接続に成功しました";
    exit;
}
?>

INSERT(新しいフィールドデータを追加する)

// DBライブラリを読み込む
require_once("DB.php");

// データベースに接続するための情報を記述
$dsn = "mysql://dbuser:hoge@localhost/phplesson";

// データベースに接続
$db = DB::connect($dsn);

// 接続に失敗したらその旨を出力
if (DB::isError($db)) {
print "接続に失敗しました";
exit;
}

// データベースに新しいフィールド情報をinsert
// address_tテーブルに追加
$sql = "INSERT INTO address_t VALUES ('9','三浦','1981-07-05','東京都新宿区','説明','miura@hogehoge.hoge')";

// PEAR::DBのqueryメソッドを利用してSQL文を実行
$res = $db->query($sql);

// 何行のデータが反映したのかを取得するメソッド
$num = $db->affectedRows();

// 反映された数を表示
print $num.”行が追加されました。”;

?>

確認してみる。

mysql> select * from address_t;
+--------+----------+------------+--------------------+--------------------------------------------------------------+------------------------+
| number | name     | birthday   | address            | explanation                                                  | mail                   |
+--------+----------+------------+--------------------+--------------------------------------------------------------+------------------------+
|      9 | 三浦     | 1981-07-05 | 東京都新宿区       | 説明                                                         | miura@hogehoge.hoge    |
|      2 | saito    | 1978-01-01 | TokyoShibuyaku     | setsumei                                                     | saito@hogehoge.hoge    |
|      3 | ito      | 1979-01-01 | TokyoToshimaku     | setsumei                                                     | ito@hogehoge.hoge      |
|      4 | watanabe | 1989-09-01 | TokyoShibuyaku     | setsumei                                                     | watanabe@hogehoge.hoge |
|      5 | nakagawa | 1989-01-01 | TokyoToshimaku     | setsumei                                                     | nakagawa@hogehoge.hoge |
|      6 | hayashi  | 1989-01-01 | TokyoArakawaku     | setsumei                                                     | hayashi@hogehoge.hoge  |
|      7 | maeda    | 1989-01-01 | TokyoTaitoku       | setsumei                                                     | maeda@hogehoge.hoge    |
|      8 | 鈴木     | 1980-12-29 | 東京都渋谷区       | 山田さんにはいつもお世話になっています。                     | yamada@hogehoge.hoge   |
+--------+----------+------------+--------------------+--------------------------------------------------------------+------------------------+
8 rows in set (0.00 sec)

UPDATEとDELETE(フィールドデータの内容を更新、削除)

<?php

// DBライブラリを読み込む
require_once("DB.php");

// データベースに接続するための情報を記述
$dsn = "mysql://dbuser:hoge@localhost/phplesson";

// データベースに接続
$db = DB::connect($dsn);

// 接続に失敗したらその旨を出力
if (DB::isError($db)) {
	print "接続に失敗しました";
	exit;
}

// address_tテーブル内のnumberカラムの値が8のフィールドデータを更新するための
$sql = "UPDATE address_t SET birthday='1980-05-22',address='東京都港区' WHERE number = '8'";

// PEAR::DBのqueryメソッドを使用してSQL文を実行
$res = $db->query($sql);

// 何行のデータが反映されたかを取得するメソッド
$num = $db->affectedRows();

// 反映された数字を出力
print $num."行が更新されました。";

// address_tテーブル内のnumberカラムの値が5のフィールドデータを削除する
$sql = "DELETE FROM address_t WHERE number = '5'";

// PEAR::DBのqueryメソッドを利用してSQL文を実行
$res = $db->query($sql);

// 何行のデータが反映されたかを取得するメソッド
$num = $db->affectedRows();

// 反映された数字を出力
print $num."行が削除されました。";

?>

確認してみる。

mysql> select * from address_t;
+--------+----------+------------+--------------------+--------------------------------------------------------------+------------------------+
| number | name     | birthday   | address            | explanation                                                  | mail                   |
+--------+----------+------------+--------------------+--------------------------------------------------------------+------------------------+
|      9 | 三浦     | 1981-07-05 | 東京都新宿区       | 説明                                                         | miura@hogehoge.hoge    |
|      2 | saito    | 1978-01-01 | TokyoShibuyaku     | setsumei                                                     | saito@hogehoge.hoge    |
|      3 | ito      | 1979-01-01 | TokyoToshimaku     | setsumei                                                     | ito@hogehoge.hoge      |
|      4 | watanabe | 1989-09-01 | TokyoShibuyaku     | setsumei                                                     | watanabe@hogehoge.hoge |
|      6 | hayashi  | 1989-01-01 | TokyoArakawaku     | setsumei                                                     | hayashi@hogehoge.hoge  |
|      7 | maeda    | 1989-01-01 | TokyoTaitoku       | setsumei                                                     | maeda@hogehoge.hoge    |
|      8 | 鈴木     | 1980-05-22 | 東京都港区         | 山田さんにはいつもお世話になっています。                     | yamada@hogehoge.hoge   |
+--------+----------+------------+--------------------+--------------------------------------------------------------+------------------------+
7 rows in set (0.00 sec)

numberカラムの値が5のフィールドが削除され、8のフィールドのbirthdayカラムとaddressカラムの値が更新された。

SELECT文の実行

<?php

// DBライブラリを読み込む
require_once("DB.php");

// データベースに接続するための情報を記述
$dsn = "mysql://dbuser:hoge@localhost/phplesson";

// データベースに接続
$db = DB::connect($dsn);

// 接続に失敗したらその旨を出力
if (DB::isError($db)) {
	print "接続に失敗しました";
	exit;
}

print "<html><head><title>PEAR::DBでSELECT文を実行する</title></head>";
print "<body>";
print "<table border='1'>";
print "<tr><td>番号</td><td>名前</td><td>生年月日</td><td>住所</td><td>説明</td><td>メールアドレス</td></tr>";

// SQLのSELECT文
$sql = "SELECT * FROM address_t";

// SQLを実行
$res = $db->query($sql);

// $res->fetchRow();でデータを1行取得する
while(is_array($row = $res->fetchRow(DB_FETCHMODE_ASSOC))) {

	// それぞれのカラム名を連想配列のキーとしてデータを取得できる
	print "<tr><td>".$row["number"]."</td>";
	print "<td>".$row["name"]."</td>";
	print "<td>".$row["birthday"]."</td>";
	print "<td>".$row["address"]."</td>";
	print "<td>".$row["explanation"]."</td>";
	print "<td>".$row["mail"]."</td></tr>";
}

print "</table>";
print "</body>";
print "</html>";

?>

ブラウザで確認してみる。

DBでSELECT文を実行する_1233379519344

Categories

Tag Cloud

AdMob Android Apache centos CodeIgniter EC-CUBE facebookアプリ facebookページ feed Firefox Flash google googleanalytics htaccess iPad iPhone JavaScript lamp mobile nginx ogp pear php plugin rollover rss sendmail setting smarty ssh Titanium Mobile Titanium Studio tutorial ubuntu vim VirtualBox vmware vps Windows WordPress xampp youtube さくらインターネット アクセス解析 カスタム投稿