Skip to content

PHP_11 「データベースを使ったPHPの処理」

Last updated on 2019/7/11

データベース(DB)

DBとは?

Wikipediaには、

データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり

https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9

と書いてあります。

データベース(情報の集まり)を運用、管理していくためのソフトウェアをデータベース管理システム(DBMS)といい、CSVやただのテキストファイルにデータを保存するよりも多機能で便利なものです。

ウェブシステムを開発しようと思ったときには、使用頻度は多いです。(使っていないサービスもありますが。)

メリット

データベースを使うのは、いくつかのメリットがあるからです。

簡単にまとめると、

  • 簡単にデータ編集が可能
  • 同時アクセスが可能
  • バックアップ機能

といったメリットがあります。

SQLとは?

データの操作や定義を行うためのリレーショナルデータベース管理システム(RDBMS)を操るための言語です。

下記の記事がすごく丁寧にまとめられていて、なおかつ概念やSQLの構文も説明されており、わかりやすいです。

https://qiita.com/nishiy-k/items/49b3b658fb90d3e8fed3

使い方

PDO

PHPでDBMSにアクセスするために使うオブジェクトがPDOです。

変数 = new PDO(データソースの情報,  DBに接続するためのユーザー名, DBに接続するためのパスワード, オプション設定);

SQLの実行

PHPからSQLを実行するにはいくつかの方法があります。

query

$stmt = $pdo->query('SELECT * FROM users');

prepare + execute

$stmt = $pdo->prepare('SELECT * FROM users');
$stmt->execute();
$stmt = $pdo->prepare('SELECT * FROM users WHERE city = ? AND gender = ?');
$stmt->execute([$city, $gender]);

もし、ユーザーが入力した値を使わないのなら、query、ユーザーが入力した値を使うなら、prepare + executeを使いましょう。

データを読み込む

// SQLの実行
$stmt = $pdo->query('SELECT * FROM users');

// データを読み込む
while ($row = $stmt->fetch()) {
    echo $row['name'];
}

データを書き込む・更新する

書き込む場合 その1

$stmt = $pdo->prepare('INSERT INTO users(name) VALUES(?)');
$stmt->bindValue(1, $name, PDO::PARAM_STR);
$stmt->execute();

書き込む場合 その2 (executeの引数に値を入れるやり方)

$stmt = $pdo->prepare('INSERT INTO users(name) VALUES(?)');
$stmt->execute([$name]);

入力を伴わないクエリであれば、

$count = $pdo->exec('UPDATE users SET age = age + 1');

こう書くこともできます。execの戻り値は、追加・更新対象になった数を返します。

データベースを使った処理の代表例