1 of 5

Webアプリケーション入門

データベースと「ユーザーごとの情報表示」の仕組み

PHP × MySQL

ユーザー管理

データベース

認証・セキュリティ

2 of 5

CampusSquare を使ったことがある?

Aさん がログイン

Aさん

学籍番号: 2024001

自分の情報のみ表示

Bさん がログイン

Bさん

学籍番号: 2024002

自分の情報のみ表示

Cさん がログイン

Cさん

学籍番号: 2024003

自分の情報のみ表示

❓ どうして「自分の情報だけ」が表示されるの?

AさんがログインしたらBさんやCさんの情報まで見えたら困りますよね。

3 of 5

答えはシンプル

accountsテーブル(アカウント情報)

user_id

name

password_hash

1

Aさん

****

1

2

Bさん

****

2

3

Cさん

****

3

gradesテーブル(成績情報)

user_id

subject

score

1

数学

87

1

1

英語

92

1

2

数学

75

2

3

英語

68

3

user_id

で紐付け

🔑 user_id が共通キー

Aさんがログイン → セッションに user_id = 1 を保存

② WHERE user_id = 1 でgradesテーブルを絞り込む

③ Aさんの成績だけが取得・表示される

4 of 5

ログイン〜成績表示の流れ

1

ログイン入力

学籍番号 & パスワード入力

2

認証チェック

accountsテーブルで照合

3

セッション保存

user_idをセッションに格納

4

DBクエリ発行

WHERE user_id = ? で抽出

5

成績情報を表示

自分の成績のみ画面に表示

PHP例:

$stmt = $pdo->prepare("SELECT * FROM grades WHERE user_id = ?");

$stmt->execute([$_SESSION["user_id"]]);

5 of 5

まとめ

テーブル設計

accountsテーブルとgradesテーブルに分けてデータを管理する

共通キー(user_id)

両テーブルにuser_idカラムを持たせることで紐付ける

WHERE句で絞り込み

ログイン中のuser_idでSELECT → 自分のデータだけ取得

セッションで状態管理

ログイン後はセッションにuser_idを保持し各リクエストで参照