はじめに
- 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(投稿一覧)
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
に遷移します。
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(投稿一覧)
データが削除されました。