プログラミング覚え書き

WEB製作覚え書き

ノート代わりに勉強した内容をまとめています。

MariaDB + PHP:レコードの取得

 

イメージ図

f:id:midori_x:20200211133547p:plain

 

 

 

データベースに接続

mysqli_connect('ホスト名', '接続用ユーザ名', '接続用パスワード')

● MariaDBに接続するための関数。
● シェルでいうところの以下の処理
    mysql -u ユーザ名 -p
    Enter password: *******
● ホスト名とは、データベースがインストールされているサーバ名のこと。「localhost」は、自分のパソコンを意味する。
● 戻り値について
接続に成功した場合:
mysqlクラスという、接続情報を管理するオブジェクトのアドレスを返す。
接続に失敗した場合:false

 例

f:id:midori_x:20200211124707p:plain

※論理演算子「or」を使って接続できなかった場合の処理を記述している。die関数は、処理を終了させるための関数で、終了時に、引数で指定したMysqlエラーメッセージを表示する。

 

 

データベース領域を選択

mysqli_select_db(mysqlクラス, データベース領域);

● データベース領域を選択するための関数

● シェルでいうところの【USE データベース領域;】の処理

    mysqli_select_db($dbobj'practice');

 

 

 

文字コードの指定

mysqli_set_charset(mysqlクラス, 'PHPで使用する文字コード');

PHP側で使用する文字コードをDB側に伝えるための関数。必要があればコードを調整して文字化けを防いでくれる。

mysqli_set_charset($dbobj'utf8');

 

 

 

データベースの情報を取得する

mysqli_query(mysqlクラス,mysql文)

  • データベースにSQL文を伝える関数
  • 戻り値は外部リソース
  • ポインタが1行目にセットされる。ポインタとは、現在参照している行の位置を指し示すもの。

    $resultSet = mysqli_query(
      $dbobj,
      'SELECT * FROM stationery'
    ) or die(mysqli_error($dbobj));
    // mysqli_query関数:DBにSQL文を伝える関数
    // 第1引数:接続許可証
    // 第2引数:SQL文「SELECT * FROM stationery」
    // 戻り値:外部リソース「PHP外からのデータ」
    // 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 |
    // +----+----------+-------+-------+---------+-------+ 

 

 

 

 

取得したリソースを連想配列に変換

mysqli_fetch_assoc(取得した外部リソース)

fetch:読み込む

assoc:連想

例1

    $data = mysqli_fetch_assoc($resultSet);

 

    echo $data['id'];
    echo $data['item'];
    echo $data['price'];
    echo $data['stock'];
    echo $data['keyword'];
    echo $data['maker'];

  ↓ ↓ ↓

f:id:midori_x:20200212103500p:plain
 

イメージ

f:id:midori_x:20200211133325p:plain

 

 

応用1(全レコードを表示)

f:id:midori_x:20200212105916p:plain

 ↓ ↓ ↓

f:id:midori_x:20200212110421p:plain  f:id:midori_x:20200212110519p:plain

 

 

応用2(応用1をwhile文で記述)

f:id:midori_x:20200212111333p:plain

⇒ポインタがレコードに位置している内は、$dataには何かしらの値が入っているので、trueに真偽値変換され、処理が実行される。ポインタがレコードをポイントしなくなったタイミングでwhile文を抜ける。

 

 

 

応用3(itemとpriceのみを記述)

f:id:midori_x:20200212111659p:plain

 ↓ ↓ ↓

f:id:midori_x:20200212111724p:plain

 

 

応用4(200円以下の商品のみを表示)

方法1(if文)

f:id:midori_x:20200212112750p:plain

 ↓ ↓ ↓

f:id:midori_x:20200212112644p:plain

 

方法2(データ取得時に絞り込む)

f:id:midori_x:20200213070642p:plain