- イメージ図
- データベースに接続
- データベース領域を選択
- 文字コードの指定
- データベースの情報を取得する
- 取得したリソースを連想配列に変換
- 応用1(全レコードを表示)
- 応用2(応用1をwhile文で記述)
- 応用3(itemとpriceのみを記述)
- 応用4(200円以下の商品のみを表示)
イメージ図
データベースに接続
mysqli_connect('ホスト名', '接続用ユーザ名', '接続用パスワード')
- ● MariaDBに接続するための関数。
- ● シェルでいうところの以下の処理
mysql -u ユーザ名 -p
Enter password: ******* - ● ホスト名とは、データベースがインストールされているサーバ名のこと。「localhost」は、自分のパソコンを意味する。
- ● 戻り値について
- 接続に成功した場合:
- mysqlクラスという、接続情報を管理するオブジェクトのアドレスを返す。
- 接続に失敗した場合:false
例
※論理演算子「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');
データベースの情報を取得する
- データベースに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'];
↓ ↓ ↓
イメージ
応用1(全レコードを表示)
↓ ↓ ↓
応用2(応用1をwhile文で記述)
⇒ポインタがレコードに位置している内は、$dataには何かしらの値が入っているので、trueに真偽値変換され、処理が実行される。ポインタがレコードをポイントしなくなったタイミングでwhile文を抜ける。
応用3(itemとpriceのみを記述)
↓ ↓ ↓
応用4(200円以下の商品のみを表示)
方法1(if文)
↓ ↓ ↓
方法2(データ取得時に絞り込む)