データベースを利用したwebアプリを作る【PHPからMySQLを使う方法】

db Webエンジニア

これまでwebアプリを作るために必要な情報を色々と記事にしてきました。

think

webエンジニアになる為にどんなwebサイト・アプリを作ったらいいか?

2019年9月21日
xampp

【PHPでwebアプリを作る】環境構築編【windows+xamppインストール方法】

2019年9月23日
first

PHPでwebアプリを作る時に何から作り始めればいいか【最初の手順】

2019年9月27日
input

【PHP入門】コレさえ覚えればwebアプリを作れます!【フォームの使い方】

2019年9月28日

今回はwebアプリを作るのに必須なデータベースの使い方を見ていこうと思います。

作成済みのデータベース

まずは既にデータベースを作成していることを前提条件として、そこにアクセスしていくことを解説していきます。

作成するデータベースの詳細は以下の記事を参考にしてください。

table

【webアプリを作る】データベースの考え方・テーブル設計のやり方編

2019年9月22日

データベース名はサイト名から適当につけます。今回は「何食べた?」って感じなのでwhateatとでもしておきましょうか。

作成するテーブルは記事の通り、usersテーブルとpostsテーブルです。それぞれ以下の画像のような構造です。

db
db

データ型やオートインクリメントなど別途解説したいこともあるので、そちらはまた別記事で解説させていただきます。

PHPからデータベースwhateatにアクセスする

ここ何年もフレームワークを利用してデータベースに接続していたので、素のPHPからデータベースに接続するのは本当に久しぶりです。

ただ最初の勉強としては知っておいて損はない情報なので、素のPHPから接続する方法を知っておくのは良いことだと
思います。

接続方法いくつかありますが、今回はPHP7でmysqli関数を利用するやり方でいこうと思います。

$db = new mysqli('localhost', 'root', '', 'whateat');
if ($db->connect_error){
    echo '接続失敗';
} else {
    echo '接続成功';
}

この書き方だと各値が何のことなのかわかりづらいと思うので以下の様に定数を定義する形で書き換えますね。

define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'whateat');

$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($db->connect_error){
    echo '接続失敗';
} else {
    echo '接続成功';
}

XAMPPをデフォルトのまま利用している場合はDB_NAME以外はこのままでいけるはずです。違う場合はそれぞれの値を調整してください。

接続成功が表示されればひとまずデータベースへの接続はできたので準備完了です。

データの登録

それではデータの登録から試していこうと思います。usersテーブルにテストユーザーを入れてみます。

先ほど作成したPHPのコードに追加で以下のコードを書いてください。

$db->set_charset('utf8');

$query = "INSERT INTO users (user_id, mail, password, nickname, created_at) VALUES (NULL, 'test@test.com', 'test', 'あいうえお', '2019-09-28 00:00:00')";
$result = $db->query($query);
if (!$result) {
    echo '登録失敗';
}else{
    echo '登録成功';
}

実行してphpMyAdminから確認して以下のようなデータが入っていればOKです。

db

実務ではこのようなクエリを直接実行するなんてことはまずありえません。今回は勉強としてどう動くかをわかりやすくすることだけを優先した形になっていることだけ、なんとなく頭に入れておいてください。実際には入力された値をエスケープして入れ込む等の作業が発生します。

データの取得

データを登録したので、次はそのデータを取得してきて表示するということを試してみましょう。

$query = "SELECT * FROM users";
$result = $db->query($query);
while  ($row = $result->fetch_assoc()) {
    echo $row["user_id"] . ':' . $row["nickname"] . "
";
}

usersテーブルのデータを全件取得して、取得したレコード分表示を繰り返すサンプルです。

データの更新

次にデータの更新のサンプルです。

$query = "UPDATE users SET nickname = 'かきくけこ' WHERE user_id = 1";
$result = $db->query($query);
if (!$result) {
    echo '更新失敗';
}else{
    echo '更新成功';
}
例によってクエリの中に条件となる数字を直書きするということはまず実務ではやらないので、ここではこう動くんだという確認程度にとどめておいてください。ちゃんとした書き方は実際にwebアプリを作成する際の記事で書きます。

データの削除

続いて削除のサンプルです。

$query = "DELETE FROM users WHERE user_id = 1";
$result = $db->query($query);
if (!$result) {
    echo '削除失敗';
}else{
    echo '削除成功';
}
データの削除は間違えると取り返しがつかないので、あまり使う機会がないかもしれません。削除したように見せる論理削除といった方法もありますので、また別途解説させていただく予定です。

まとめ

以上、基本的なデータベースの扱い方を見てきました。はじめはどうせテスト環境なので色々試してみつつ、phpMyAdminなどで結果を確認しながら、こうするとこうなるのかということを勉強してみるといいと思います。

より実践的な方法は今後webアプリを作成する記事の中で書いていきます。