LoginSignup
8
10

More than 3 years have passed since last update.

【PDO】DELETE文でデータを削除する方法

Posted at

はじめに

  • DELETE文でデータを削除する方法について本やネットの情報から調べて理解したことをまとめました。
  • もし、書いていることに何か間違いがある場合はご指摘いただけると嬉しいです。

データを削除するSQL文

  • データを削除するにはDELETE文を使います。

DELETE文の書き方

DELETE FROM テーブル名 WHERE 条件;

DELETE文でデータを削除するコード例

簡易掲示板を実装することを仮定して解説します。

開発環境

MAC
MAMP

ファイル

index.php
delete.php

画面

投稿一覧
削除画面

以下のようなデータベースとテーブル、レコード登録されていると仮定して解説します。

データベース名: test_db6
テーブル名: users

id name message
1 waka3 おはようございます
1 waka こんばんわ

index.php(投稿一覧)

スクリーンショット 2019-07-07 13.23.59.png

index.php
<?php

try {

    $user = "ここにユーザー名が入ります";
    $password = "ここにパスワードが入ります";

    $dbh = new PDO("mysql:host=localhost; dbname=test_db6; charset=utf8", "$user", "$password");       

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

    $result = 0;

    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

} catch (Exception $e) {
          echo 'エラーが発生しました。:' . $e->getMessage();
}

?>
  <!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>簡易掲示板</title>
  </head>
  <body> 
      <h2>簡易掲示板</h2>
        <?php
            echo "<table>\n";
              echo "<tr>\n";
              echo "<th>お名前</th><th>メッセージ</th>\n";
              echo "</tr>\n";
              foreach ($result as $user) {
                echo "<tr>\n";
                echo "<td>" . $user["name"] . "</td>\n";
                echo "<td>" . $user["message"] . "</td>\n";
                echo "<td>\n";
                echo "<a href=delete.php?id=" . $user["id"] . ">削除</a>\n";
                echo "</td>\n";
                echo "</tr>\n";
              }
            echo "</table>\n";
        ?>
  </body>
</html>

delete.php(削除画面)

waka こんばんわと表示されているデータを削除してみます。
削除ボタンを選択すると、delete.phpに遷移します。

スクリーンショット 2019-07-07 13.27.23.png

delete.php

<?php

try {

    $user = "ここにユーザー名が入ります";
    $password = "ここにパスワードが入ります";

    $dbh = new PDO("mysql:host=localhost; dbname=test_db6; charset=utf8", "$user", "$password");

    $stmt = $dbh->prepare('DELETE FROM users WHERE id = :id');

    $stmt->execute(array(':id' => $_GET["id"]));

    echo "削除しました。";

} catch (Exception $e) {
          echo 'エラーが発生しました。:' . $e->getMessage();
}

?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>削除完了</title>
  </head>
  <body>          
  <p>
      <a href="index.php">投稿一覧へ</a>
  </p> 
  </body>
</html>

index.php(投稿一覧)

データが削除されました。

スクリーンショット 2019-07-07 13.28.17.png

データベースの中身も削除されました。
スクリーンショット 2019-07-07 13.28.33.png

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10