3.PHP_MySQL

■データベースのCRUD

DBMSがレコードに対して行う4つの操作。

Create 生成

Read 読み取り

Update 更新

Delete 削除

SQLのコマンドでは、

insert

select

update

delete

が対応する。

今回は、MySQLにテーブルを作成し、 PHPで生成したWebから、C R D が可能なページを作製する。 U については、応用問題とし各自で挑戦、

または、次回講義で解説。

■演習内容:

新規にデータベース mypra をMySQLで作成し、フィールド数5のテーブル mytest を作成する。

mytest のデータを、表示・追加・削除する PHPファイル mypra.php を mycds.php を参考にして作成する。

データベースとテーブルの作成後、

mycds.php を mypra.php としてコピーし、テキストエディタで編集する。

サンプルコードのページ

XAMPPを起動。WebサービスとMySQLを開始する。

MySQLの管理画面、 PHPAdmin から MySQLに接続

データベースの新規作成

データベース名 mypra

照合順序 UTF8-general-ci

テーブルを1つ作成

テーブル名 mytest

フィールド数 5

フィールドの設定

フィールド名 種別 インデックス A_I(オートインクリメンタル) デフォルト値

id INT primary ○

date TIMESTAMP current_timestamp

field1

field2

field3

field1~3 のフィールド名、種別は各自で適当に指定( name , age , comment など)

例)

フィールド名 種別 長さ

name VARCHAR 11

age INT

comment TEXT

フィールドのデータに文字列を記録する場合、日本語の記録には、

照合順序 で utf8_unicode_ci の指定が必要。

(文字コードの指定がない場合は、文字化けが発生)

動作確認:

テーブルにデータを2,3件、挿入する。(挿入タブから)

作成した練習用データベース mypra のテーブルについてアクセス用のPHPファイルを

mycds.php を元にして、作成。

phpファイル名 mypra.php

設置場所: c:\xampp\htdocs\xampp\

要件:

・データベースのデータ表示

・データベースへのデータ書き込み & 書き込みデータの表示

・データベースのデータ削除

以上の3つが動作する。

・テーブルの表示で、フィールドの見出しを適切に設定する

・テーブルのデータの表示順を適切に設定する

以上の2つにも対応する。

MySQLとPHPの接続で文字化けの対処について

以下の2つの設定が必要:

1.データベースの接続で、SQLコマンドで文字コード utf8 を指定する。

mycds.phpに記載されている、

mysql_select_db("mypra");

の次の行に、

mysql_query("SET NAMES utf8");

を追記。

2.PHPのファイルを文字コードUTF8を指定して保存:

テキストエディタ terapadでは文字コードを指定して保存が可能です。以下のファイルをUTF8で保存しなおしてください。

mypra.php

上記の設定を行う以前にデータベースに記録されたレコードは、文字化けが治らないことがある。

文字化けしたレコードを削除して対応する。

テーブル mytest を参照して表示するWeb上のテーブルの文字化けは上記の設定で解消する。

しかし、逆にWeb上のテーブル以外の部分で文字化けが発生する場合がある。

これは、元の mycds.php では、

$TEXY[''keyword']

の変数に、各言語設定に応じたメッセージを設定しているためで、

上記変数内のメッセージの文字コードが他の文字コードと不一致となるためである。

修正するには、

<h2><?php echo $TEXY[''keyword']; ?></h2>

の様な箇所を

<h2>見出し1</h2>

の様に直接メッセージを表示するように変更する。