phpでPDOについての学習メモ3
やりたいこと
- 削除ボタンが押されたデータをDBから削除する。
- 修正した内容をDBで更新する。
5.削除ボタンが押されたデータをDBから削除する
まずDBに接続し、実行させるところまでは書いておく。(phpでPDOについての学習メモ1,2より参考にすること) 次に下記のように実装する。
<?php $sql = 'DELETE FROM contact_form WHERE id = :id'; $stmt = $pdo -> prepare($sql); $stmt -> bindParam(':id',$_POST['id'], PDO::PARAM_INT); $stmt -> execute(); ?>
注意する点
- DELETE文はSQL文なので変数はWHEREの中に直接PHP文の変数
$_POST['name']
とは書けない。
→$stmt->bindParam(':name',$_POST['name'],PDO::PARAM_INT);
このようにSQL文の変数に代入してあげる。
6.DBをUPDATEする
DBに接続し実行させるところまでは同じ。 次に下記のコードを参考に実装する。
(edit_confirm.php) <?php if (isset ($_POST['id'])){ $sql = "UPDATE contact_form SET name = :name, email = :email WHERE id = :id"; $id = filter_input(INPUT_POST, "id"); $stmt = $pdo -> prepare($sql); $stmt -> bindParam(':id',$id, PDO::PARAM_INT); $stmt -> bindParam(':name',$_POST['name'], PDO::PARAM_STR); $stmt -> bindParam(':email',$_POST['email'], PDO::PARAM_STR); $stmt -> execute(); } ?> <html> <head> <body> :(省略) <input type="hidden" name="id" value="<?php echo $_POST['id'];?>"> :(省略) </body> </head> </html>
注意する点
- SETはSET name=:name SET email=:email
みたいにカラムごとにSETを書かなくてよい。ソースコードに書いてあるようにカンマでまとめて書く。
- POSTは短期記憶なのでlist.phpからedit_form.phpにPOST送信したものをedit_form.phpでhiddenを使いワンクッション挟み、UPDATE文を書くまえにissetで受取る。