KECSフォーラム 第二回実践Webアプリケーション

KECSフォーラム
第二回実践Webアプリケーション
~MySQLを用いたデータベース基礎~
目次
• MySQLの簡単な使い方
• PHPからMySQLへのアクセス方法
• APIのサンプル
注意 PHPのファイルは文字コード
EUC-JPで保存すること
MySQLの導入
•
•
•
•
•
•
データベースの作成
テーブルの作成
テーブルへのデータ挿入
テーブルからのデータを検索
データの更新
データの削除
データベースを作成する
• コマンドプロンプトでMySQLの立ち上げ
「スタート」→「MySQL Server ○○」→「MySQL Command
Line Client」
• 新規ユーザの作成
mysql > GRANT ALL PRIVILEGES ON sampledb.* TO
sample@localhost IDENTIFIED BY ‘password’;
• データベースの作成
mysql > create database sampledb;
テーブルの作成 1
• データベースを確認する
mysql > show databases;
• ログアウト
mysql > \q
• 通常のコマンドプロンプトを起動
し作成したユーザでMySQL起動
C\: mysql –u sample –p sampledb
Enter password *********
mysql >
テーブルの作成 2
• テーブルの意味
テーブルの名前:会員名簿
名前
住所
1件目
年齢
行
2件目
3件目
4件目
5件目
列
カラム or フィールド
職業
レコード
テーブルの作成 3
• テーブルの作成
mysql > CREATE TABLE member (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
last_name VARCHAR(50),
first_name VARCHAR(50),
age TINYINT UNSIGNED,
PRIMARY KEY(id) );
• 作成したテーブルの確認
mysql > show tables;
• 作成したテーブルの項目(フィールド)確認
mysql > show fields from member;
テーブルへのデータ挿入
• データ挿入(INSERT文の発行)
mysql > INSERT INTO member ( last_name, first_name, age )
VALUE(‘永田’,‘俊信’, 18);
テーブル名
挿入するデータ
カラム名
この要領でデータを挿入してみよう
id
last_name first_name Age
1
永田
俊信
18
2
林
隆
23
3
佐藤
明美
40
データをテーブルから検索
• SELECT文
<項目を全て検索し出力する>
SELECT * FROM テーブル名;
ex) mysql > SELECT * FROM member;
• WHERE句
<条件を指定し、検索し出力する>
SELECT * FROM テーブル名 WHERE 条件式;
ex) mysql > SELECT * FROM member where age<30;
データの更新
• UPDATE文
UPDATE テーブル名 SET カラム名 = “更新データ” where 条件;
ex) UPDATE member SET age=19 where id=1;
※WHEREで条件を指定しなければ全てのデータが更新
• データの確認
mysql > SELECT id,last_name,age from member;
カラム名を指定可能
id
last_name
Age
1
永田
19
2
林
23
3
佐藤
40
データの削除
• DELETE文
DELETE FROM テーブル名 WHERE 条件;
ex) DELETE FROM member WHERE age<=20;
※WHEREで条件を指定しなければ全てのデータが削除
• データの確認
mysql > SELECT id,last_name,age from member;
id
last_name
Age
2
林
23
3
佐藤
40
PHPからのデータベース接続
• PHPの設定ファイルの変更
• MySQL関数の利用方法
PHPの設定
• PHP.iniの変更
C:\WINDOWS\php.iniを編集
;extension=php_mysql.dll から「;」を消す
• Apacheの再起動
タスクトレイのApacheをクリックしRestart
• <?php phpinfo(); ?>を実行し確認
MySQL Support が enabled になってるか
MySQLへ接続
• mysql_connect関数を利用
dbtest1.php ------------------------------------------<?php
$con = mysql_connect("localhost", "sample", "password")
or die("接続できません。");
print "接続に成功しました。";
パスワード
mysql_close($con);
ユーザ名
?>
-------------------------------------------------------------------------
データベースへ接続
• Mysql_select_db関数
dbtest2.php ------------------------------------------<?php
$con = mysql_connect("localhost", "sample", "password")
or die("接続できません。");
print "接続に成功しました。";
mysql_select_db("sampledb")
データベース名
or die("データベース接続エラー");
?>
--------------------------------------------------------------------------
SQL文の発行(データ挿入)
• 変数にSQL文を格納しmysql_queryで実行
<dbtest2.phpに以下を追加>
$sql = <<<EOS
INSERT INTO member(last_name,first_name,age)
VALUE(‘田中’,‘一郎’,‘21’)
EOS;
$res=mysql_query($sql, $con) or die(“sqlエラー”);
SQL文の発行(データ抽出)
<?php
$con = mysql_connect("localhost", "sample", "password")
or die("接続できません。");
print "接続に成功しました。";
mysql_select_db("sampledb") or die("データベース接続エラー");
print "データベースに接続しました。";
$sql = 'select * from sampledb. member';
$res = mysql_query($sql, $con) or die("データ抽出エラー");
while ($row = mysql_fetch_array($res, MYSQL_ASSOC) ) {
print "<hr> | ";
foreach($row as $key=>$value){
//print mb_convert_encoding($value, 'EUC-JP', 'SJIS') ."|";
print $value."|";
}
}
結果が一行ずつ返っ
mysql_close($con);
てくる
?>
SQL文の発行(データ抽出)
$row = mysql_fetch_array($res, MYSQL_ASSOC);
⇒一行の結果を$rowに配列代入
(実行
する度
に行が
移動)
id
last_name first_name Age
1
永田
俊信
18
2
林
隆
23
3
佐藤
明美
40
$row[“id”]=1
$row[“last_name”]=“永田” ・・・
APPENDIX
文字コードについて
• 主な文字コードの種類
・EUCコード(EUC-JP) //データベース等
・シフトJIS(SJIS) //Windows, IEのdefault
・Unicode(UTF-8) //linux ブログ等
・文字コード変換関数の利用
//$str1をShift-JISからEUC-JPへ変換したものを$str2へ代入
$str2= mb_convert_encoding($str1,”EUC-JP”,”SJIS”);