ここでは PDO - Part1 の学習のまとめとして演習課題に取り組みます。
サンプルデータの準備
ここでは簡単なEラーニングシステムの開発を想定して、以下の2つのテーブルを作成して学習を進めます。

categoriesテーブルcoursesテーブル
以前に利用していたテーブルと変わりありません。レコードを再登録して学習しやすいように準備します。
categories テーブル
categories テーブルには以下の3件のレコードを作成します。
| id | title |
|---|---|
| 1 | Programming |
| 2 | Design |
| 3 | Marketing |
categories テーブルの作成に必要なSQLは以下のとおりです。
drop table if exists categories;
create table categories(
id integer primary key,
title varchar(100)
);
insert into categories (id, title) values (1, 'Programming');
insert into categories (id, title) values (2, 'Design');
insert into categories (id, title) values (3, 'Marketing');
courses テーブル
courses テーブルには以下の5件のレコードを作成します。
| id | title | learning_time | category_id |
|---|---|---|---|
| 1 | PHP Basic | 30 | 1 |
| 2 | PHP Database | 50 | 1 |
| 3 | Python Basic | 40 | 1 |
| 4 | Web Design | 50 | 2 |
| 5 | Japan's History | 100 |
courses テーブルの作成に必要なSQLは以下のとおりです。
drop table if exists courses;
create table courses(
id integer primary key,
title varchar(100),
learning_time integer,
category_id integer
);
insert into courses (id, title, learning_time, category_id) values (1, 'PHP Basic', 30, 1);
insert into courses (id, title, learning_time, category_id) values (2, 'PHP Database', 50, 1);
insert into courses (id, title, learning_time, category_id) values (3, 'Python Basic', 40, 1);
insert into courses (id, title, learning_time, category_id) values (4, 'Web Design', 50, 2);
insert into courses (id, title, learning_time, category_id) values (5, 'Japan''s History', 100, null);
1 レコードの取得
PDO インスタンスを生成し、以下の select 文を実行して期待値のとおり出力するプログラム( pdo_tr1.php )を作成します。
select id, title, learning_time from courses
pdo_tr1.php
<?php
$dsn = "mysql:host=localhost;dbname=eldb;charset=utf8mb4";
$username = "root";
$password = "admin";
$pdo = new PDO($dsn, $username, $password);
// TODO
Terminal
$ php pdo_tr1.php
1,PHP Basic,30
2,PHP Database,50
3,Python Basic,40
4,Web Design,50
5,Japan's History,100
2 レコードの作成
PDO インスタンスを生成し、以下の insert 文を実行して期待値のとおり出力するプログラム( pdo_tr2.php )を作成します。
insert into courses (id, title, learning_time, category_id) values (6, 'PHP Framework', 50, 1)
pdo_tr2.php
<?php
$dsn = "mysql:host=localhost;dbname=eldb;charset=utf8mb4";
$username = "root";
$password = "admin";
$pdo = new PDO($dsn, $username, $password);
// TODO
Terminal
$ php pdo_tr2.php
Count: 1
画面には更新件数(登録件数)を表示しています。
3 レコードの更新
PDO インスタンスを生成し、以下の update 文を実行して期待値のとおり出力するプログラム( pdo_tr3.php )を作成します。
update courses set title = 'Laravel', learning_time = 60 where id = 6
pdo_tr3.php
<?php
$dsn = "mysql:host=localhost;dbname=eldb;charset=utf8mb4";
$username = "root";
$password = "admin";
$pdo = new PDO($dsn, $username, $password);
// TODO
Terminal
$ php pdo_tr3.php
Count: 1
画面には更新件数を表示しています。
4 レコードの削除
PDO インスタンスを生成し、以下の delete 文を実行して期待値のとおり出力するプログラム( pdo_tr4.php )を作成します。
delete from courses where id = 6
pdo_tr4.php
<?php
$dsn = "mysql:host=localhost;dbname=eldb;charset=utf8mb4";
$username = "root";
$password = "admin";
$pdo = new PDO($dsn, $username, $password);
// TODO
Terminal
$ php pdo_tr4.php
Count: 1
画面には更新件数(削除件数)を表示しています。