ここでは 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

画面には更新件数(削除件数)を表示しています。