alienHRNの訓練日記

IT業界初心者で勉強中。

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>
  <meta charset="UTF-8">
  <title>レコードを取得する</title>
</head>

<body>
  <div>
    <?php
    $dbobj = mysqli_connect('localhost''Tanaka''Manager')
      // 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接続許可証(オブジェクト)
    // 第二引数:PHPで使用している文字コード
    // PHPとDBで文字コードが違う場合にPHP側がUTF8を使っていることを知らせる

    // ▲--ここまで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>
  <meta charset="UTF-8">
  <title>レコードを取得する</title>
</head>

<body>
  <div>
    <?php
    $dbobj = mysqli_connect('localhost''Tanaka''Manager')
      // 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接続許可証(オブジェクト)
    // 第二引数:PHPで使用している文字コード
    // PHPとDBで文字コードが違う場合にPHP側がUTF8を使っていることを知らせる

    // ▲--ここまで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>