###前提・実現したいこと
ECサイトにて、注文後10日以内に入金がなかった場合に注文情報を削除するという
プログラムを組み、定期実行したいと思っています。
データベースから注文番号と更新日時を取得し、
更新日時と現在の日時を比較した場合に差が10(日)を超えた場合に
その注文情報を削除するという流れで考えております。
###該当のソースコード
php
1<?php 2 3try{ 4 $dsn = 'mysql:dbname=***;host=***'; 5 $user = '***'; 6 $password = '***'; 7 $dbh = new PDO($dsn, $user, $password); 8 $dbh->query('SET NAMES utf8'); 9 10 //staus=2は入金待ち 11 $sql = 'SELECT order_id,update_date FROM dtb_order WHERE status=2'; 12 $stmt = $dbh->query($sql); 13 14 foreach ($stmt as $value) { 15 16 function time_diff($time_from, $time_to) 17 { 18 $dif = $time_to - $time_from; 19 $dif_days = (strtotime(date("Y-m-d", $dif)) - strtotime("1970-01-01")) / 86400; 20 return "{$dif_days}"; 21 } 22 $from = strtotime("$value['update_date']"); 23 $to = strtotime("now"); 24 $timediff = time_diff($from, $to); 25 26 if($timediff > 10){ 27 //現在との差が10日以上ある場合 28 $sql = 'DELETE FROM dtb_order where order_id=?'; 29 $stmt = $dbh->prepare($sql); 30 $data[] = $value['order_id']; 31 $stmt->execute($data); 32 } 33 } 34} 35catch(Exception $e){ 36 print'ただいま障害により大変ご迷惑をお掛けしております。'; 37 exit(); 38} 39?>
###補足情報(言語/FW/ツール等のバージョンなど)
Server: 5.6.23-log - MySQL Community Server (GPL)
phpMyAdmin: 4.0.10.18
Apache: 5.1.73
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/12 15:50
2017/02/13 03:25