【6日でできるPHP入門】更新と削除

データベース内のデータは、必要に応じて変更(更新)したり、不要なものを削除したりすることが求められます。
MySQLでは、UPDATE文DELETE文を使ってテーブルの内容を自在に操作できます。
本記事では、SQL構文や実践例、PHPからの操作例までを丁寧に解説します。

1.レコードの更新(UPDATE文)

1.1. レコードの値を変更する

UPDATE文を使うと、テーブル内の特定レコードの値を変更できます。
書式は次の通りです。

構文説明
UPDATE データベース.テーブル名 SET カラム=値… WHERE 条件;条件に合うレコードの値を変更

例:book_idが101の書籍タイトルを「PHP超入門」に変更

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

UPDATE bookshop.books SET title = 'PHP超入門' WHERE book_id = 101;

実行後のテーブル

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

SELECT * FROM bookshop.books;
book_idtitleauthorstock
101PHP超入門田中一郎5
102MySQL実践佐藤花子3
103Web開発の基礎山本次郎7

1.2. 複数レコードの一括更新

条件に一致する複数レコードを一度に更新できます。

例:在庫数(stock)が3の本の著者名をすべて「未登録」に変更

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

UPDATE bookshop.books SET author = '未登録' WHERE stock = 3;

実行後のテーブル

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

SELECT * FROM bookshop.books;
book_idtitleauthorstock
101PHP超入門田中一郎5
102MySQL実践未登録3
103Web開発の基礎山本次郎7

2.レコードの削除(DELETE文)

2.1. 条件を指定してレコードを削除する

DELETE文で条件に合致するデータを削除できます。

構文説明
DELETE FROM データベース.テーブル名 WHERE 条件;条件に合うデータを削除

例:book_idが101の本を削除

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

DELETE FROM bookshop.books WHERE book_id = 101;

実行後のテーブル

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

SELECT * FROM bookshop.books;
book_idtitleauthorstock
102MySQL実践未登録3
103Web開発の基礎山本次郎7

2.2. 条件を省略して全レコード削除

WHERE句なしでDELETE文を実行すると、テーブルの全データを一括削除します。

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

DELETE FROM bookshop.books;

実行後:テーブル内のデータがすべて空になります。

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

SELECT * FROM bookshop.books;

3.PHPから更新・削除を実行する例

3.1. データベースのrootユーザのパスワードの設定

MAMPインストール直後は、rootユーザにパスワードが設定されていません。

rootユーザにパスワードを設定していない場合は、データベースのrootユーザのパスワードの設定を行う必要があります。

1.「ユーザアカウント」タブに切り替え、「権限を編集」のリンクをクリックします。

2.rootユーザーのパスワードを設定します。

「Change password」タブを選択します。

ここでは、練習用にrootユーザーのパスワードに「root」と設定します。

「パスワード」と「再入力」に「root」と入力したら、「実行」ボタンをクリックします。

3.2. データの挿入とテーブル確認

テーブルが空になっているため、データを挿入します。

※データベース名を省略できるように「CREATE TABLE」の前に「USE bookshop;」を指定しています。

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

USE bookshop;

INSERT INTO books (book_id, title, author, stock) VALUES
    (101, 'PHP入門', '田中一郎', 5),
    (102, 'MySQL実践', '佐藤花子', 3),
    (103, 'Web開発の基礎', '山本次郎', 7);

実行後のテーブル

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

SELECT * FROM bookshop.books;

実行結果

book_idtitleauthorstock
101PHP入門田中一郎5
102MySQL実践佐藤花子3
103Web開発の基礎山本次郎7

3.3. レコードの更新

ファイル名: lesson68_1.php

<?php
$mysqli = new mysqli('localhost', 'root', 'root', 'bookshop');
if ($mysqli->connect_error) {
    echo "接続失敗: " . $mysqli->connect_error;
    exit;
}
$mysqli->query("UPDATE books SET stock = 10 WHERE book_id = 103");
echo "book_id=103の在庫数を10に更新しました。";
$mysqli->close();
?>

実行結果

実行後のテーブル

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

SELECT * FROM bookshop.books;
book_idtitleauthorstock
101PHP入門田中一郎5
102MySQL実践佐藤花子3
103Web開発の基礎山本次郎10

3.4. レコードの削除

ファイル名: lesson68_2.php

<?php
$mysqli = new mysqli('localhost', 'root', 'root', 'bookshop');
if ($mysqli->connect_error) {
    echo "接続失敗: " . $mysqli->connect_error;
    exit;
}
$mysqli->query("DELETE FROM books WHERE stock < 4");
echo "在庫が3以下の本を削除しました。";
$mysqli->close();
?>

実行結果

実行後のテーブル

「クエリボックス」に以下のSQLクエリを入力して「実行」ボタンをクリックします。

SELECT * FROM bookshop.books;

まとめ

  • UPDATE文はレコードの値を部分的に変更、DELETE文は条件に合致するレコードや全データの削除に使います。
  • WHERE句で条件を絞るのが基本。WHEREを省略すると全件対象になるため注意が必要です。
  • PHPからも簡単に更新・削除が可能。必ず実行結果や影響範囲を確認して安全に操作しましょう。
  • データ操作の基礎を押さえて、実践的なWeb開発や管理に活用してください!