「php06」の編集履歴(バックアップ)一覧に戻る
php06 - (2012/01/17 (火) 22:30:01) の編集履歴(バックアップ)
(9) PHPでデータベースを操作する
SQLの結果↑↓SQLのコマンド
SQLの結果↑↓SQLのコマンド
結果↑↓コマンド
- PEAR MDB2を使ったアクセス
- PHPからデータベースにアクセスする方法がいくつかあるが、その一つがPEAR MDB2を使う方法である。(MDBのバージョンアップ版)
- PEAR MDB2を使うとデータベース管理システム(MySQLやPostgreSQL、SQLite等)に依存しないコードを書くことができる。
- 接続手順
- データベースに接続
- SQLを発行する
- SQLの結果を受け取って処理する
- 接続を切る
- 準備
- 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/
- 接続しよう。
- 下記のスクリプトを実行しよう。(ユーザ名、パスワード他は自分で入れなおしてください。phpMyadminにログインする際と同じです。)
+
|
←クリックで開く |
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;
|
# 初期化
$sql = 'set names utf8';
$res =& $mdb2->query($sql);
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);
# 接続を切る
$mdb2->disconnect();
}
- レコードの変更(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に失敗しました');
}
- レコードの読み込み(select):queryメソッド
変数 =& $mdb2->query(SQL文)
- レコードを1件ずつ読み込み(select):fetchRowメソッド
$data =& $res->fetchRow();
※$data, $res :変数
- while文と一緒に用いて1件ずつレコードを処理する
while ($data = $res->fetchRow()){
個々のレコードに対する処理
}
※ XAMPP 1.7.7 [PHP: 5.3.8] での設定項目です。