「php06」の編集履歴(バックアップ)一覧に戻る

php06 - (2012/01/17 (火) 22:30:01) の編集履歴(バックアップ)


前のページ < | > 次のページ

(9) PHPでデータベースを操作する

  • 操作イメージ
スクリプト
SQLの結果↑↓SQLのコマンド
PHPエンジン
SQLの結果↑↓SQLのコマンド
(MySQL)データベースエンジン
結果↑↓コマンド
データベース

  • PEAR MDB2を使ったアクセス
    • PHPからデータベースにアクセスする方法がいくつかあるが、その一つがPEAR MDB2を使う方法である。(MDBのバージョンアップ版)
    • PEAR MDB2を使うとデータベース管理システム(MySQLやPostgreSQL、SQLite等)に依存しないコードを書くことができる。
    • 接続手順
  1. データベースに接続
  2. SQLを発行する
  3. SQLの結果を受け取って処理する
  4. 接続を切る

  • 準備
    • 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] での設定項目です。






前のページ < | > 次のページ
◆ ◆ ◆