DB操作 newsfeed制作6
DB操作 newsfeed制作6
今回は削除を実際に処理するnews_delete_fin.phpの記述を学習する。
コード記述
news_delete_confirm.phpで確定した削除対象を実際に削除する。このファイルは削除だけのために存在し、ブラウザ上で表示させるものはない。処理が終わり次第、news_list.phpに戻す。
セッション開始~url直打ちリダイレクト
今回のリダイレクト条件は、ログインに成功していない場合と削除データのセッションがない場合とした。
require_once dirname(__FILE__).'/session.php';
if(!isset($_SESSION['login']['success'])||!$_SESSION['delete_data']['news_id']){
header(ROOT_URL.'index.php');
exit;
}
セッションデータを変数に格納~セッションデータ削除
$news_idにセッションデータを格納し、すぐさま不要となったセッションデータを消す。
$news_id=$_SESSION['delete_data']['news_id'];
$_SESSION['delete_data']=array();
unset($_SESSION['delete_data']);
DB接続~削除処理
$sql='DELETE FROM news WHERE news_id=:news_id;';が実際の削除処理となる。
$dbh=""; try{ $dbh=new PDO(DB_CONNECT,DB_USER,DB_PASS); }catch(Exception $e){ //echo $e->getMessage();エラーメッセージを捕まえて表示させる exit('ランタイムエラーが発生しました'); } $sql='DELETE FROM news WHERE news_id=:news_id;'; $stmt=$dbh->prepare($sql); $stmt->bindparam('news_id',$news_id); $r=$stmt->execute();
感想
削除処理はSELECTと違い、指定IDを誤ると取り返しのつかない事になる。テストを重ね、誤った処理を走らせないよう厳重な注意が必要となる。一方、この処理を理解すれば、その他のUPDATEやINSERTもほぼ同様の処理であり、応用が利く。DBを開いて直接編集するリスクを考慮すると、このような処理を実装することは有意義であり、管理面、作業性の面で重要である。