2011-06-17 4 views
0

PHPのMySQLテーブルに将来の日付を挿入しようとしています。私はstrtotimeを使用して現在の日付を挿入することができましたが、この呼び出しに時間を追加すると、それを挿入していないようです。ここでは、コードは次のようになります。PHPを使用してMySQLで将来の日付を設定するためのヘルプが必要

<?php 
$currentDate = strtotime('now'); 
$expirationDate = strtotime('+ 90 days'); 

include_once "mysql-connect.php";  

$cur = "UPDATE table SET current_date = FROM_UNIXTIME($currentDate) WHERE ..."; 

if (!mysql_query($cur,$con)) 
{ 
die('Heres Your Error: ' . mysql_error()); 
} 
echo "the date is set"; 

$exp = "UPDATE table SET expiration_date = FROM_UNIXTIME($expirationDate) 
WHERE ..."; 


if (!mysql_query($exp,$con)) 
{ 
die('Heres Your Error: ' . mysql_error()); 
} 
echo " expiration date is set"; 

mysql_close($con) 
?> 

私はこれを実行したときに要求されたとして、それはCURRENT_DATEの行に現在の日付を挿入します、言ったように。なんらかの理由で、現在の日付の90日前のexpiration_dateは挿入されません。私は、有効期限が将来90日になったことを確認しました。なぜこれは機能しないのですか?

+0

最後の更新でエラーが返されますか? – BugFinder

+0

mysql_error()とは何ですか? –

答えて

4

あなたはMySQLのdirectlyでそれを行うことができます:あなたが救うwhich'll

$days = 90; 

$sql = "UPDATE ... SET expiration_date = DATE_ADD(current_date, INTERVAL $days DAY);" 

を過剰ラウンドトリップ> datetime-からUNIX timestamp->日時。

+0

+1、シンプルでエレガント。 – Mattis

+0

はいはいはい。これはgrrrrrreat働いた! – Presto

1

strtotime()関数は必ずしもうまく動作しないので、悪い考えです。

PHPで日付を記述するのではなく、日付 - 時間関数の適切なプール(http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html)を提供するMySQLで直接行うことをお勧めします。クエリの

、あなたが行うことができます:

UPDATE `table` 
SET `current_date` = NOW(), `expiration_date` = DATE_ADD(NOW(), INTERVAL 90 DAY) 
WHERE ...; 

をところで、あなたのクエリの場合のために、2つ目の更新は、すべてのエラーを返すん。次のIFのどの部分が実行されますか?

関連する問題