【问题标题】:How can I store a date in a MySQL database using PHP?如何使用 PHP 在 MySQL 数据库中存储日期?
【发布时间】:2009-09-25 12:51:50
【问题描述】:

我想在 MySQL 数据库中存储一个日期值。

我有一个名为A.php 的PHP 页面,它有3 个输入:dmy,其中d = (1 ... 31)m =(1 ... 12)y = (1970 to 2009)

现在在b.php 我收集这些值,我需要存储在我的数据库中。

我的数据库有一个名为 dob 的字段,它属于日期类型。

如何从dmy 构造一个日期类型的变量并将其存储在数据库中?

【问题讨论】:

    标签: php mysql date


    【解决方案1】:

    mysql 日期字段采用“yyyy-mm-dd”格式,因此按原样存储,但将其作为字符串从 PHP 传入,包括破折号。

    【讨论】:

      【解决方案2】:

      你可以给它一个字符串:

      $sql = 'insert into tbl (dob) values 
              (\'' . $month . '/' . $day . '/' . $year . '\')';
      

      MySQL 会为您进行正确的转换,因此您甚至不必担心。

      确保您已完成mysql_real_escape_string 以防止对所有变量进行 SQL 注入。

      【讨论】:

      • MySQL如何知道格式是mm/dd/yyyy还是dd/mm/yyyy
      • @andho:这真是太聪明了。那,它需要mm/dd/yyyy,而不是dd/mm/yyyy作为格式。
      【解决方案3】:

      要构造日期类型的变量,请使用 mktime() 函数:

      $date = mktime(0, 0, 0, $month, $day, $year);
      

      要将您的 $date 存储在数据库中,请将日期转换为字符串:

      $sql = "INSERT INTO table (dob) VALUES ('" . date('Y-m-d', $date) . "')";
      

      或者,使用 mySQLi:

      $query = $db->prepare('INSERT INTO table (dob) VALUES (FROM_UNIXTIME(?))');
      $query->bind_param('i', $date);
      $query->Execute();
      

      【讨论】:

        【解决方案4】:

        最好将其作为 UNIX 时间戳存储在数据库中,因为它是跨平台使用的

        mktime()
        

        然后,当您从数据库中检索它时,使用

        date()
        

        将其转换为您想要的任何格式(例如 2009 年 10 月 31 日;2009 年 10 月 31 日;等)

        【讨论】:

          【解决方案5】:

          太长了。只需这样做:

          $dt = sprintf("%'04s-%'02s-%'02s",$y,$m,$d);
          mysql_query("insert into mytable (dob) values ('$dt')");
          

          【讨论】:

            猜你喜欢
            • 2022-01-08
            • 2014-05-04
            • 2011-12-24
            • 1970-01-01
            • 2015-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多