20200928 授業メモ
授業内容
〇コマンドプロンプトとは
文字ベースでコンピュータとやりとりするツール
※SQL=structure query lunguage(要求分)
作成に必要なファイル
practice.sql
user.sql
上記2点をザンプフォルダ内に作成
■データベースに接続する手順(シェル)
1.ユーザ名とパスワードを指定してmysqlにログイン
mysql -u root -pack
2.データベース領域の選択
use practice
----------ここまでが接続----------
3.テーブルの表示
select * from stationery;
--practice.sql--
#データベース領域の作成
create database practice;
#データベース領域の選択
use practice
#テーブル作成
create table stationery(
id int primary key auto_increment,
item char(10),
price int,
stock int default 0,
keyword text,
maker int
);
#stationeryテーブルにレコードを挿入
INSERT INTO stationery (item, price,stock,keyword,maker) VALUES
('万年筆', 19000,10,'逸品',1),
('鉛筆', 60,22,'文具',2),
('クレヨン', 120,8,'絵画',3),
('色鉛筆', 200,15,'絵画',3),
('消しゴム', 90,26,'事務',2),
('コンパス', 160,0,'事務',1);
#traderテーブル作成
create table trader(
m_id int primary key auto_increment,
company char(10),
address text,
tell char(13)
);
#traderテーブルにレコードを挿入
INSERT INTO trader (company, address,tell) VALUES
('ペン工房', '東京都','03-0000-0000'),
('小鳥文具', '栃木県','028-111-1111'),
('黒木屋', '島根県','0853-55-5555');
--user.sql--
#ユーザの作成
grant all
on practice.*
to Tanaka@localhost identified
by 'Manager';
#ユーザの確認
select user,host from mysql.user;
#ユーザの詳細確認
show grants for Tanaka@localhost;
--select_test.php--
<!DOCTYPE html>
<html>
<head>
<title>レコードを取得する</title>
</head>
<body>
<div>
<?php
// mysqli_connect:DB接続関数
// 第一引数:DBサーバの場所
// 第二引数:ユーザ名
// 第三引数:パスワード
// 戻り値:接続ok→接続情報をもったオブジェクト
// 接続NG→false
or die(mysqli_error($dbobj));
mysqli_select_db($dbobj, 'practice');
// USE practice と同じ処理
// mysqli_select_db:DB領域選択
// 第一引数:DB接続許可証(オブジェクト)
// 第二引数:選択するDB領域
mysqli_set_charset($dbobj, 'utf8');
// mysqli_set_charset:文字化け対策保険
// 文字コード変換
// 第一引数:DB接続許可証(オブジェクト)
// ▲--ここまでDB接続処理--▲
$resultSet = mysqli_query($dbobj, 'select * from stationery')
// mysqli_query:SQL文をDBに渡す関数
// 第一引数:DB接続許可証(オブジェクト)
// 第二引数:SQL文
// 戻り値:select文の結果のテーブル情報
// テーブル情報を変数resultSetに代入
// +----+----------+-------+-------+---------+-------+
// | id | item | price | stock | keyword | maker |
// +----+----------+-------+-------+---------+-------+
// | 1 | 万年筆 | 19000 | 10 | 逸品 | 1 |
// | 2 | 鉛筆 | 60 | 22 | 文具 | 2 |
// | 3 | クレヨン | 120 | 8 | 絵画 | 3 |
// | 4 | 色鉛筆 | 200 | 15 | 絵画 | 3 |
// | 5 | 消しゴム | 90 | 26 | 事務 | 2 |
// | 6 | コンパス | 160 | 0 | 事務 | 1 |
// +----+----------+-------+-------+---------+-------+
or die(mysqli_error($dbobj));
$data = mysqli_fetch_assoc($resultSet);
echo $data['item'];
?>
</div>
</body>
</html>
--select_test.php--
<!DOCTYPE html>
<html>
<head>
<title>レコードを取得する</title>
</head>
<body>
<div>
<?php
// mysqli_connect:DB接続関数
// 第一引数:DBサーバの場所
// 第二引数:ユーザ名
// 第三引数:パスワード
// 戻り値:接続ok→接続情報をもったオブジェクト
// 接続NG→false
or die(mysqli_error($dbobj));
mysqli_select_db($dbobj, 'practice');
// USE practice と同じ処理
// mysqli_select_db:DB領域選択
// 第一引数:DB接続許可証(オブジェクト)
// 第二引数:選択するDB領域
mysqli_set_charset($dbobj, 'utf8');
// mysqli_set_charset:文字化け対策保険
// 文字コード変換
// 第一引数:DB接続許可証(オブジェクト)
// ▲--ここまでDB接続処理--▲
$resultSet = mysqli_query($dbobj, 'select * from stationery')
// mysqli_query:SQL文をDBに渡す関数
// 第一引数:DB接続許可証(オブジェクト)
// 第二引数:SQL文
// 戻り値:select文の結果のテーブル情報
// テーブル情報を変数resultSetに代入
// +----+----------+-------+-------+---------+-------+
// | id | item | price | stock | keyword | maker |
// +----+----------+-------+-------+---------+-------+
// | 1 | 万年筆 | 19000 | 10 | 逸品 | 1 |
// | 2 | 鉛筆 | 60 | 22 | 文具 | 2 |
// | 3 | クレヨン | 120 | 8 | 絵画 | 3 |
// | 4 | 色鉛筆 | 200 | 15 | 絵画 | 3 |
// | 5 | 消しゴム | 90 | 26 | 事務 | 2 |
// | 6 | コンパス | 160 | 0 | 事務 | 1 |
// +----+----------+-------+-------+---------+-------+
or die(mysqli_error($dbobj));
$data = mysqli_fetch_assoc($resultSet);
// mysqli_fetch_assoc
// DBから取得した外部リソースを連想配列に変換する関数
// ポインタ位置を次に動かす
// 第一引数:連想配列に変換する外部リソース
// 戻り値:ポインタ位置のレコードを連想配列にして返す。
// 戻り値の連想配列を変数dataに代入
echo $data['item'];
echo $data['price'];
echo '<pre>';
var_dump($data);
echo '</pre>';
// 繰り返し分を使って各項目を表示させる。
while ($data = mysqli_fetch_assoc($resultSet)) {
// mysqli_fetch_assoc関数の結果を変数dataに代入
// 代入された変数dataを繰り返し条件の判定に使用
// 変数dataに連想配列があれば「true」
echo 'ID:';
echo $data['id'];
echo '<br>';
echo '商品名:';
echo $data['item'];
echo '<br>';
echo '価格:';
echo $data['price'];
echo '<br>';
echo '在庫数:';
echo $data['stock'];
echo '<br>';
echo 'キーワード:';
echo $data['keyword'];
echo '<br>';
echo 'メーカー:';
echo $data['maker'];
echo '<br>-------------------<br>';
}
?>
</div>
</body>
</html>