DELTE文がうまく実行されない
php、mysqlを利用して簡易掲示板のユーザー登録機能を作っています。
そこで今実装したいのが仮登録(本登録フラグがFALSE)のまま1日以上経過したユーザーはデータベース上から削除するというプログラムです。
以下では、まず仮登録のユーザーをセレクトし、その投稿時刻が現在の時間より1日以上離れていれば、そのユーザーのID(ユニークな値)をもとにDELTEする、というような流れのつもりで記述しています。
php
1<?php 2$user = '*************'; 3$password = '********'; 4$dsn = "********************************************************"; 5 6$pdo = new PDO($dsn, $user, $password); 7// if($pdo){ 8// echo "繋げてはいます"; 9// } 10$time_now = date('Y-m-d H:i:s'); 11//今の時間を表示してみる 12//echo $time_now; 13 14//仮登録の人をセレクト 15$sql = "SELECT * FROM user_information WHERE registered = 0"; 16$stmt = $pdo->query($sql); 17// if($stmt){ 18// echo "実行できています"; 19// } 20foreach($stmt as $row) { 21 $time_post = $row["date"]; 22 $key = $row["id"]; 23 echo "ID:".$key." "; 24 $time_post_sec = strtotime($time_post); 25 $time_now_sec = strtotime($time_now); 26 $differences = $time_now_sec - $time_post_sec; 27 //時間差を日という単位まで丸める 28 $differences = gmdate("d",$differences) - 1; //なぜか予定より1多い 29 echo "時間差:".$differences." "; 30 if($differences > 0){ 31 $sql = 'DELETE FROM user_information WHERE id = "$key"'; 32 $stmt = $pdo->query($sql); 33 if($stmt){ 34 echo "期限切れだったので消しました<br/>"; 35 }else{ 36 echo "期限切れだったけど消しませんでした<br/>"; 37 } 38 }else{ 39 echo "仮登録後1日以内<br/>"; 40 } 41 42} 43 44 ?> 45
if文内ではユーザーはきちんと仕分けられ、登録後1日以上経っているユーザーに関しては”期限切れだったので消しました”を出力します。しかし、そこを通っているだけで、実際は消えていません。これはなぜでしょうか?DELETE文の書き方に問題がありますか?
ご教授いただけますと幸いです。
回答4件
あなたの回答
tips
プレビュー