【サクッと解説】PHPでのINSERT・UPDATE・DELETEの基本構文と安全な実行方法

目次

1. 本記事のポイント

  • PHPからMySQLに対するINSERT・UPDATE・DELETEの基本構文を解説
  • PDOによるSQL実行の安全な書き方とプレースホルダの使い方を紹介
  • 実務上の注意点や典型的なミスも補足

2. PHPのINSERT・UPDATE・DELETEとは?

PHPでデータベース操作を行う際、INSERT・UPDATE・DELETEは「データの登録・更新・削除」を担う基本的なSQL命令です。これらを適切に扱うことで、Webアプリケーションにおけるデータ管理機能を構築できます。

実務では、PDO(PHP Data Objects)を使ったデータベース接続が推奨されており、SQLインジェクションへの対策としてプレースホルダの使用が不可欠です。

たとえば、フォームから受け取ったデータをDBに格納したり、編集機能で特定レコードを更新したり、削除ボタンでエントリを消したりと、INSERT・UPDATE・DELETEはCRUD操作の中心的な存在です。

3. 詳細解説

3.1 データを追加(INSERT)する

ユーザー登録や記事投稿など、新しいデータをDBに登録する際に使用します。

PHP
// データベース接続
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass');

// SQL文を用意
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);

// 値をバインドして実行
$stmt->execute([
    ':name' => '田中太郎',
    ':email' => 'taro@example.com'
]);

出力はありませんが、成功すると1件のデータが追加されます。

3.2 データを更新(UPDATE)する

既存レコードの一部情報を変更する処理です。

PHP
$sql = "UPDATE users SET email = :email WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->execute([
    ':email' => 'new@example.com',
    ':name' => '田中太郎'
]);

WHERE句を省略すると全レコードが更新されるため、必ず条件を指定してください。

3.3 データを削除(DELETE)する

不要になったレコードを削除する際に使用します。

PHP
$sql = "DELETE FROM users WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->execute([':name' => '田中太郎']);

UPDATEと同様、DELETEも条件指定を怠ると全件削除になるリスクがあります。

4. よくあるミス・誤解・落とし穴

  • プレースホルダを使わずに文字列を直接SQLに埋め込むと、SQLインジェクションの危険があります。
  • WHERE句を省略したUPDATE/DELETEは、全件が対象となるため、バックアップなしの実行は危険です。
  • $stmt->execute()後の戻り値はtrue/falseで、件数取得にはrowCount()を用います。
  • プレースホルダには「:key」形式の命名が必要で、対応する配列のキーとも一致している必要があります。

5. まとめ

PHPでINSERT・UPDATE・DELETEを安全に実行するには、PDOを使ったプレースホルダの活用が重要です。条件付きのSQL実行やバインド処理に慣れることで、より堅牢なアプリケーションが構築できます。

特にUPDATEやDELETEでは、WHERE句の指定ミスが重大な事故につながるため、必ず事前チェックやテストデータでの検証を行うようにしましょう。

よかったらシェアしてね!
  • URLをコピーしました!
目次