【问题标题】:Inserting date() into a database not working将 date() 插入数据库不起作用
【发布时间】:2012-04-09 08:36:17
【问题描述】:

我将 $date 设置为当前时间,当我将它插入数据库时​​,它显示为一个长小数。

例如。 0.000059642147117296

代码如下:

HTML

 <form id="comments" action="<?=site_url('headquarters/scopeSummary')?>" method="POST">
        <textarea name="comment" cols="70" rows="5"></textarea>
        <input type="hidden" name="scopeId" value="<?=$id?>" />
        <input type="hidden" name="user" value="<?=$user?>" />
        <br />
        Mark as important?<input type="checkbox" name="important" value="yes" />
        <input type="submit" value="Submit" name="submit" />
 </form>

PHP

 if ($comment) {
    $date = date('n/d/Y', time());
    $comQuery = $this->db->query('INSERT INTO scope_comments VALUES(NULL, "'. $scopeId .'", "'. $comment .'", "'. $user .'", "", "", '. $date .', "'. $gravity .'")');
}

所有插入的值都已设置。他们不是问题。只有 $date 搞砸了。我正在使用 codeigniter 和 phpmyadmin。

【问题讨论】:

  • SQL 注入。该代码要求它。
  • 日期字段的结构是什么? date, datetime, timestamp?!?

标签: php insert phpmyadmin timestamp


【解决方案1】:

由于您使用当前系统时间进行插入,因此更容易拥有

INSERT INTO ... (datefield) VALUES (NOW()) 

并让数据库生成自己的日期值。这省去了在 PHP 中生成字符串、引用/转义字符串、然后让 MySQL 将该字符串解析回自己的格式的麻烦。

【讨论】:

    【解决方案2】:

    您忽略了引用日期值,因此系统正在计算类似 2012 年 3 月 25 日的内容(即您看到的 0.00005642147117296)。

    您还以错误的格式指定日期。它必须采用Y-m-d 格式。

    最后,您的数据库字段可能未定义为日期,因此请务必更正该表定义。

    【讨论】:

      猜你喜欢
      • 2022-12-20
      • 2017-10-07
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多