【问题标题】:illegal 0000-00-00 00:00:00 timestamp being sent by php to mysql using codeigniterphp 使用 codeigniter 将非法 0000-00-00 00:00:00 时间戳发送到 mysql
【发布时间】:2024-01-16 23:50:02
【问题描述】:

这是我的 CodeIgniter 模型中的 Database_update_entry 函数,它会在表单提交成功后执行。

<?php
    function update_entry(){
        $data = array(
            'sl' => $this->input->post('item_sl'),
            'item_name' => $this->input->post('item_name'),
            'img_url' => $this->input->post('img_url'),
            'sound_url' => $this->input->post('sound_url'),
            'price' => $this->input->post('price'),
            'unit' => $this->input->post('unit'),
            'timestamp' => time(),
        );
        echo "current time: ".  time();
        $this->db->update(MY_TABLE_NAME, $data);
    }
?>

数据库查询执行良好....但是设置到 mysql 表中的时间是 0000-00-00 00:00:00&lt;?php echo time() ?&gt; 语句在浏览器中显示 1307018223 ......这是一个有效的 UNIX 时间戳......你可以check the timestamp validity here.

这里是成功update_queryhttp://s3.amazonaws.com/awesome_screenshot/658523?AWSAccessKeyId=0R7FMW7AXRVCYMAPTPR2&Expires=1307020816&Signature=AncPjnzG9p9QTX7zebZp7c9teB0%3D后从mySQL表中取数据的表截图

我做错了什么???如何将合法时间戳从我的 php 传递到 mySQL? [附:我已经检查了我的 mysql 表中的时间戳字段是时间戳字段]

【问题讨论】:

    标签: php mysql codeigniter timestamp


    【解决方案1】:

    mysql timestamp 字段接受 yyyy-mm-dd H:i:s 日期格式,因此您必须将日期传递为此格式而不是 UNIX 时间戳

    而不是这个

    'timestamp' => time()
    

    使用

    'timestamp' => date('Y-m-d H:i:s')
    

    如果你真的想存储UNIX time stamp,请将字段类型更改为CHAR

    【讨论】:

    • @syedrakib: CHAR(11) 可以用于时间戳字段
    【解决方案2】:

    使用date('Y-m-d H:i:s', time());

    ;)

    【讨论】:

      【解决方案3】:

      您需要提供时间戳字符串,而不是整数。试试:

      'timestamp' => date('Y-m-d H:i:s', time()),
      

      【讨论】:

      • 我认为如果将 UNIX 时间戳添加到时间戳字段中,mysql 具有将 UNIX 时间戳转换为 mySQL 时间戳的能力
      【解决方案4】:

      格式化时间:date('Y-m-d H:i:s', time())

      【讨论】:

      • 我认为如果将 UNIX 时间戳添加到时间戳字段中,mysql 具有将 UNIX 时间戳转换为 mySQL 时间戳的能力......谢谢:)