1

私は本当に単純な問題を抱えていますが、それを並べ替えることができません.PHPとMySQLにはかなり慣れていないため、苦労しています.

概要 - PHPを使用してISO8601の日付をMySQL DBテーブルに挿入したい

ISO8601 形式、つまり YYYY-MM-DDTHH:MM:SS のタイムスタンプ (MeanPublic の下) を持つ text.xml ファイルがあります。

PHP でファイルを読み取ることができ、その ISO8601 の日付をエコーできますが、MySQL に挿入すると、0000-00-00 00:00:00 と記録されます。日付から「T」を削除しようとしましたが、うまくいきません。

vchar、char、int、date、datetime、および time でデータベース テーブル フィールドを設定しようとしましたが、何も設定しませんでした。ただし、手動の日付/時刻を挿入すると、問題なく挿入されます。

後でこれらの値に対して日付/時刻クエリを実行する必要があるため、日付/時刻としてログに記録することが重要です

これがコードです

if( ! $xml = simplexml_load_file('test.xml') ) 
    { 
        echo 'unable to load XML file'; 
    } 
    else 
    { 
        foreach( $xml as $MeanPublic ) 
        {
        $key = split(":", $MeanPublic->Key);
        $meanvalue = $MeanPublic->Mean;
        $FTSvalue = str_replace('T', ' ', $MeanPublic->Timestamp);

mysql_query("INSERT INTO table (totwhout, wbstamp) VALUES ($meanvalue, $FTSvalue)");
       }
4

2 に答える 2

2

おそらく既に確認済みだと思いますが、クエリを作成するときにタイムスタンプ値を一重引用符で囲んでいますか? 投稿されたコードから判断すると、あなたのようには見えません.MySQLは、その点でTIMESTAMP値が文字列のように渡されることを期待しています.

于 2012-01-26T16:39:53.117 に答える
1

この問題は DATE/TIME 形式が原因ではないようです。SQL では文字列を引用符で囲む必要があります。

mysql_query("INSERT INTO table (totwhout, wbstamp) VALUES ('$meanvalue', '$FTSvalue')");
于 2012-01-26T16:44:37.350 に答える