2012-01-05 36 views
7

どのようにしてのエラー解決しない:エラーがこれは私のコードでは、ライン31から45に読み込むものです線35で起こっている致命的なエラー:未定義のメソッドのDateTimeに呼び出し:: createfromformat()

Fatal error: Call to undefined method DateTime::createfromformat() 

// check database for necessary updates 

$update = mysql_query("SELECT * FROM rent WHERE colour='#3C0'"); 
while($row_update = mysql_fetch_array($update)) { 
    $datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
    $datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
    $datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 
    if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) { 
     // date is between do nothing 
    } else { 
     // date is not between so update 
     $update_result = mysql_query("UPDATE rent SET colour='#F0F0F0' WHERE id=" . $row_update['id'] . " && colour='#3C0'"); 
     mysql_close($update_result); 
    } 
} 

どうすれば解決できますか?

+0

この行を削除してください。エラーはそれから遠ざかります。一般的には未定義関数を呼び出さないことをお勧めします。そうしないと、常に致命的なエラーが発生するためです。おそらくあなたが呼びたいPHPマニュアルの関数をリンクすることができますので、あなたが何をしようとするのかははっきりしていますか? – hakre

+0

errormessageをコピーする際に間違っていたか、それともファイルではない: 'createfromformat!= createFromFormat' – KingCrunch

+0

コードはローカルサーバでうまく動作するようです。 – methuselah

答えて

20

DateTime::createFromFormat()がphp 5.3に導入されました。ほとんどの場合、古いものがあります。だから、php> = 5.3をインストールすれば、それはうまくいくでしょう。

+0

PHPバージョン5.2.9 - uk2.netサーバで実行しています – methuselah

+0

以前のバージョンのPHP(PHP <5.3)を実行しているサーバには同等のアプローチがありますか? – Sam

+0

@Sam: 'strtotime'は同等ではありませんが、 – zerkms

5

実行中のPHPのバージョンは? PHPによれば、createDateFormatはバージョン> = 5.3.0で利用可能です。

- あなたのコードが誤ったDateTimeを使用していたように見えます

を編集し、そのcreateFromFormatではオブジェクトではなく、文字列を返しますが、あなたは日時を移調することができるはずです:: createFromFormat()(dateを呼び出します)コール。

// PHP >= 5.3.0 
$datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
$datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 

// PHP < 5.3.0 
$datetime_lower = date('d/m/Y', $min); 
$datetime_upper = date('d/m/Y', $max); 
$datetime_compare = date('d/m/Y g:i a', $row_update['pDate']); 

あなたがタイムスタンプを扱っている場合、あなたは特定のフォーマットに変換することなく比較OPSを行うことができます、しかし私には思えます。対処している日付のいずれかがタイムスタンプ形式でない場合は、次の操作を実行できます。

$timestamp = strtotime($yourFormattedDateTime); 

// Now with everything in ints, you can do your conditional evals 
+0

PHPバージョン5.2.9 - uk2.netサーバー上で実行しています – methuselah

+0

なぜ古いバージョンを実行しているのかわからない場合は、 5.2.9の日付/時刻操作のためにサポートされている関数呼び出しを使用するか、ソフトウェアで最新の新しいホストを見つけることができます。 –

+1

サポートされている関数呼び出しをお勧めできますか? – methuselah

関連する問題