2013-02-11 5 views
3

Мне нужно сравнить две даты, когда если одна дата больше, чем другая, тогда будет запущен sql. это мой кодсравнение даты и времени php

date_default_timezone_set('Asia/Kuala_Lumpur'); 
$date = date('Y-m-d G:i:s'); 
$query = mysql_query("SELECT * FROM package_transaction"); 
if(mysql_num_rows($query) > 0) { 
    while($row = mysql_fetch_array($query)) {   
     $transac_code = $row['transac_code']; 
     $duedate = $row['payment_due']; 

     if(strtotime($date) > strtotime($duedate)) 
     { 
      mysql_query("UPDATE package_transaction SET `status` = 'cancelled' WHERE `payment_due` = `$duedate` AND `transac_code` = `$transac_code`"); 

     } 

    } 
} 

но его не работает. пожалуйста, помогите

+0

Пожалуйста, не используйте 'mysql_ *' функции, это осуждается (см [* красный квадрат *] (http://php.net/manual/en/function.mysql-query.php)) и уязвим для SQL-инъекции. Используйте [* PDO *] (http://php.net/manual/en/book.pdo.php) или [* MySQLi *] (http://php.net/manual/en/book.mysqli.php) , Кроме того, «это не работает» на самом деле не говорит нам много ... на какой строке код выходит из строя? Какая ошибка? etc – alfasin

+2

Итак, в чем проблема – Rab

+0

Вы всегда можете просто сохранить дату платежа в качестве отметки времени unix, тогда вы можете упростить весь свой код до 1 строки: 'UPDATE ... WHERE \' payment_due \ '<$ currentTime' – Supericy

ответ

1

вы можете попробовать и использовать формат даты, прежде чем использовать StrToTime

$duedate = $row['payment_due']; 
$duedate = $duedate->format('Y-m-d G:i:s'); 
+0

он уже в этом формате, но все равно никаких изменений. – arukiri123

2

попробовать это,

date("Y-m-d", strtotime($date)) > date("Y-m-d", strtotime($duedate)) 
+0

это дает мне значение 1. что это значит? – arukiri123

+2

Это означает, что это правда. Это сравнение, которое приводит к логическому результату. – Maerlyn

Смежные вопросы