退職後の趣味の鉛筆画とはじめてのPHP

鉛筆画、PHPなどの備忘録です。

PHP 登録ユーザーの削除 delete

テストのために登録した、同じメールとパスワードのユーザーがたくさんあります。
重複したデータを削除するファイルをつくりました。

もし公開するのであれば、危険なので書きかえる必要があります。

名前は違いますがすべて同じメールとパスワードで登録したユーザーです。

この中で61番の佐々木みどりさんを削除してみます。

削除ができました。

61番がありません。

////////////////////////////////////////////////////////

このなかでわかりにくかったことを書かせていただきます。

下の $id =(int)$_GET['id'];の部分です。

$id = (int)$_GET['id'];
$dbh = new PDO('mysql:host=localhost;dbname=saien;charset=utf8', $user, $pass);
  
$sql = "DELETE FROM customer WHERE id = :id";
$stmt = $dbh->prepare($sql);
$stmt->bindValue( ':id', $id, PDO::PARAM_INT);
$stmt->execute();

ユーザー名の横の削除のリンクはこのようになっています。

echo htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8').'さん ';
echo "<a href=delete_user.php?id=" . hsc($row['id']), ">削除</a>\n";

少しわかりにくいのですが

echo "<a href=delete_user.php?id=$row['id']) ">削除</a>\n";

このようになっています。

delete_user.phpにこのデータの$row[id]でidを渡しています。

上にも書きましたが、受け取るほうは$id =(int)$_GET['id'];で受け取っています。

送るほうはGETでは送らずに、受け取るほうはGETで受け取っています。

上の写真で61番を削除したときのリンクに
?id=61と書かれています。

この61を受け取って削除しています。

わかりにくくて申し訳ありません。
POSTの場合にはmethod="post"などと指定して送りますが、GETの場合はgetの指定をしていません。

ここのところがよくわかりませんでした。