「php07」の編集履歴(バックアップ)一覧はこちら
「php07」(2012/01/18 (水) 12:35:57) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
[[前のページ>php06]] < | > [[次のページ>php08]]
*(9) PEAR MDB2を使ってみる
・こちらが分かり良いです。
・・参考ページ:ttp://codezine.jp/article/detail/2480?p=2
・ここでは、簡易的な操作手順のみ記述しています。
・&bold(){PEAR MDB2を使った接続}
・・次のようにMySQLに接続します。MDB2::connectの引数は、「'mysqli://ユーザ名:パスワード@ホスト/データベース名?charset=文字コード'」です(接続に失敗するとエラーが表示されます)。
> require_once 'MDB2.php';#ライブラリのロード
> $db=MDB2::connect('mysqli://test:pass@localhost/mydb?charset=utf8');
> if(PEAR::isError($db)) die("<p>{$db->getMessage()}</p>");#エラー処理
・&bold(){準備}
・・InnoDBを有効にする。my.cnfの「skip-innodb」をコメントアウトし、その下のInnoDBの設定を有効にしておく。私の環境ではすでにこの状態でした。
> #skip-innodb #InnoDBの設定をスキップしない
> # Uncomment the following if you are using InnoDB tables
> #InnoDBのためのファイルの格納場所
> innodb_data_home_dir = C:/xampp/mysql/data/
> #InnoDBのためのファイルの初期サイズと拡張方法(ここでは自動)
> innodb_data_file_path = ibdata1:10M:autoextend
> innodb_log_group_home_dir = C:/xampp/mysql/data/
> innodb_log_arch_dir = C:/xampp/mysql/data/
・&bold(){接続しよう。}
・・下記のスクリプトを実行しよう。(ユーザ名、パスワード他は自分で入れなおしてください。phpMyadminにログインする際と同じです。)
#region(close, ←クリックで開く)
# データベースを作成
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8;
# アクセス権限の設定(ユーザ名はtest、パスワードはpass)
GRANT ALL ON mydb.* to test@localhost IDENTIFIED BY 'pass';
# テーブルを作成(トランザクションを使うため、エンジンはInnoDBにする)
USE mydb;
CREATE TABLE books(
id INT AUTO_INCREMENT PRIMARY KEY,
title TEXT NOT NULL,
publisher VARCHAR(50) DEFAULT '' NOT NULL,
year INT DEFAULT 0 NOT NULL,
price INT DEFAULT 0 NOT NULL
) ENGINE=InnoDB;
#endregion
#co(){{
・・また、Macを使用している方は、
> $pear_path = 'c:/xampp/php/PEAR';
を、
> $pear_path = '/Applications/xampp/xamppfiles/lib/php/pear';
に変更してください。
//#region(close,←クリックで開く)
# MDB2クラスの組み込み
$pear_path = 'c:/xampp/php/PEAR';
set_include_path(get_include_path() . PATH_SEPARATOR . $pear_path);
require_once('MDB2.php');
# DSNの設定
$dsn = array(
'phptype' => 'mysql',
'username' => 'root', #ユーザ名
'password' => 'pass', #パスワード
'database' => 'testdb', #データベース名
'hostspec' => 'localhost', #ホスト名
);
# オプションの設定
$options = array(
'portability' => MDB2_PORTABILITY_ALL,
);
# 接続
$mdb2 =& MDB2::connect($dsn, $options);
if (PEAR::isError($mdb2)) {
exit('データベースへの接続に失敗しました');}
# 初期化
$sql = 'set names utf8';
$res =& $mdb2->query($sql);
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);
# 接続を切る
$mdb2->disconnect();
//#endregion
}}これで完了です。
・&bold(){レコードの変更(insert/update/delete):execメソッド}
> 変数=& $mdb2->exec (SQL文)
・例)テーブルにレコードを挿入
・・「insert into sometable values (1, 'a')」というSQLを実行してテーブルにレコードを挿入する。失敗したときはメッセージを表示して終了する。
> $result =& $mdb2->exec("insert into sometable values (1, 'a')");
> if (PEAR::isError($result)) {
> exic('SQLに失敗しました');
> }
・&bold(){レコードの読み込み(select):queryメソッド}
> 変数 =& $mdb2->query(SQL文)
・&bold(){レコードを1件ずつ読み込み(select):fetchRowメソッド}
> $data =& $res->fetchRow();
> ※$data, $res :変数
・while文と一緒に用いて1件ずつレコードを処理する
> while ($data = $res->fetchRow()){
> 個々のレコードに対する処理
> }
※ XAMPP 1.7.7 [PHP: 5.3.8] での設定項目です。
※ 参考サイト:ttp://codezine.jp/article/detail/2480
----
#center(){[[前のページ>php06]] < | > [[次のページ>php08]]}
#center(){◆ ◆ ◆}
----
[[前のページ>php06]] < | > [[次のページ>php08]]
*(9) PEAR MDB2を使ってみる
・こちらが分かり良いです。
・・参考ページ:ttp://codezine.jp/article/detail/2480?p=2
・ここでは、簡易的な操作手順のみ記述しています。
・&bold(){PEAR MDB2を使った接続}
・・次のようにMySQLに接続します。MDB2::connectの引数は、「'mysqli://ユーザ名:パスワード@ホスト/データベース名?charset=文字コード'」です(接続に失敗するとエラーが表示される)。
> require_once 'MDB2.php';#ライブラリのロード
> $db=MDB2::connect('mysqli://test:pass@localhost/mydb?charset=utf8');
> if(PEAR::isError($db)) die("<p>{$db->getMessage()}</p>");#エラー処理
・&bold(){エラー用スクリプト}
・・いちいちエラーをチェックするのは面倒なので、エラーハンドラ(エラーが発生したときに実行される関数)を用意しておく。
・・mdb2init.php
> #エラーが発生したときに実行される関数
> function errorHandler($error){
> echo "<p>エラー発生 {$error->getMessage()}</p>";
> }
> #errorHandlerを使うように設定
> PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'errorHandler');
・&bold(){レコードの変更(insert/update/delete):execメソッド}
・・結果の返らないクエリはexecメソッドを使います。
> 変数=& $mdb2->exec (SQL文)
・例)テーブルにレコードを挿入
・・「insert into sometable values (1, 'a')」というSQLを実行してテーブルにレコードを挿入する。失敗したときはメッセージを表示して終了する。
> $result =& $mdb2->exec("insert into sometable values (1, 'a')");
> if (PEAR::isError($result)) {
> exic('SQLに失敗しました');
> }
・・mdb2-1.php
> $db->exec('TRUNCATE TABLE books');
> $db->exec("INSERT INTO books VALUES (1,'The Art of Computer Programming 1',
> 'アスキー',2004,10290)");
> $db->exec("INSERT INTO books VALUES (2,'フリーソフトウェアと自由な社会',
> 'アスキー',2003,3360)");
> $db->exec("INSERT INTO books VALUES (3,'計算機プログラムの構造と解釈',
> 'ピアソンエデュケーション',2000,4830)");
> $db->exec("INSERT INTO books VALUES (4,'プログラミング作法','アスキー',
> 2000,2940)");
> $db->exec("INSERT INTO books (id,title,publisher,year,price) VALUES
> (5,'Webアプリケーション構築入門','森北出版',2007,3360)");
・&bold(){レコードの読み込み(select):queryメソッド}
> 変数 =& $mdb2->query(SQL文)
・&bold(){レコードを1件ずつ読み込み(select):fetchRowメソッド}
> $data =& $res->fetchRow();
> ※$data, $res :変数
・while文と一緒に用いて1件ずつレコードを処理する
> while ($data = $res->fetchRow()){
> 個々のレコードに対する処理
> }
※ XAMPP 1.7.7 [PHP: 5.3.8] での設定項目です。
※ 参考サイト:ttp://codezine.jp/article/detail/2480
----
#center(){[[前のページ>php06]] < | > [[次のページ>php08]]}
#center(){◆ ◆ ◆}
----