【问题标题】:Cannot insert datetime from csv into mysql无法将 csv 中的日期时间插入 mysql
【发布时间】:2014-10-24 08:50:15
【问题描述】:

我正在尝试从 csv 文件中获取“日期时间”并将其插入 MySql 数据库。我究竟做错了什么?提前致谢!

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
            {
                $date = new Datetime();
                $this->date->format('Y-d-m H:i:s', ($data[3]));

                $sql = "INSERT INTO logs(ID, User, Flag, Date) values('$data[0]', '$data[1]', '$data[2]', '$data[3]')";
                $insert = $this->dataBase->getData($sql);

【问题讨论】:

  • 您似乎正在格式化日期,但没有将其传递到字符串中。
  • $date !== $this->date... 更不用说如果$this->date 是一个 DateTime 对象,那么 format() 方法语法是错误的.... 阅读友好手册
  • @GordonLinoff 你能给我举个例子吗?我真的很感激。谢谢

标签: php mysql datetime csv sql-insert


【解决方案1】:

$date$this->date 不同,这就是您收到错误的原因:

Notice: Undefined property: Import::$date Fatal error: Call to a member function format() on a non-object

【讨论】:

    【解决方案2】:

    首先你必须得到日期格式的值,格式必须是 Y-m-d 而不是 Y-d-m

    $date = new Datetime($data[3]); 
    $myDate = $date->format('Y-m-d H:i:s');
    
    $sql = "INSERT INTO logs(ID, User, Flag, Date) values('$data[0]', '$data[1]', '$data[2]', '$myDate')"; 
    $insert = $this->dataBase->getData($sql);
    

    【讨论】:

      【解决方案3】:

      MySQL为您处理date formatting

       INSERT INTO logs(ID, User, Flag, Date) values('$data[0]', '$data[1]', '$data[2]', DATE_FORMAT('$myDate', '%d %b %Y %T:%f'));";
      

      您可能还想查看PDO 和prepared statements,以避免SQL 注入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-31
        • 2011-02-25
        • 2013-09-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多