1

我有一个非常简单的问题,但我无法对其进行排序,这对 PHP 和 MySQL 来说相当新,这就是我努力的原因

概述 - 我想使用 PHP 将 ISO8601 日期插入 MySQL 数据库表

我有一个 text.xml 文件,它的时间戳(在 MeanPublic 下)是 ISO8601 格式,即 YYYY-MM-DDTHH:MM:SS

我可以用 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 回答