0

在我的 MySql 数据库中,post_time字段的值已设置为NOT NULL DEFAULT CURRENT_TIMESTAMP

我使用以下 MySqlinsert语法和 html 表单从访问者那里收集数据,当他们提交表单时,通过隐藏字段将帖子的日期和时间插入 MySql 数据库。

$insertSQL = sprintf("INSERT INTO entry (post, post_time) VALUES (%s, %s)",                     
GetSQLValueString($_POST['post'], "text"),  
GetSQLValueString($_POST['post_time'], "date"));

  <form action="<?php echo $editFormAction;?>" method="post" name="form1" id="form1">
    <table width="50%" align="center">
      <tr valign="baseline">
        <td align="right" nowrap="nowrap">Post:</td>
        <td>
        <textarea name="post" cols="50" rows="5"></textarea>
        </td>
      </tr>
      <tr valign="baseline">
      <td align="right" nowrap="nowrap">
        <input type="hidden" name="post_time" value="<?php echo $_POST['TIMESTAMP DEFAULT CURRENT_TIMESTAMP']; ?>" /> 
         <input type="hidden" name="MM_insert" value="form1" />
        </td>
        <td>
 <input type="submit" name="submit_post" value="Submit Post" />
       </td>
       </tr>
    </table>
  </form>

如何根据共享服务器上的预定义时区收集有关日期和时间的数据(服务器具有基于 GMT 的时区)?

那我该如何执行下面的 sql 语法呢?

编辑:

SET time_zone = 'America/New_York';

谢谢,

4

2 回答 2

1

设置post_time为默认值CURRENT_TIMESTAMP,MySQL 将自动更新该列。除非您想覆盖它,否则您不需要设置它。

设置date_default_timezone_set()对 MySQL 无关紧要 - 如果 MySQL 服务器设置了自己的日期,则需要为它设置时区。

最后,您不应该将post_time隐藏字段放在表单中 - 您的服务器应该 (A) 生成此值,或 (B) 让 MySQL 自动生成此值。

于 2013-06-27T15:39:29.050 回答
1

您不应该插入这样的值,而是编写一个执行它的查询:

INSERT INTO entry (post, post_time) VALUES (?, UTC_TIMESTAMP())

您输入的值是定义列的方式,而不是插入值的方式。

于 2013-06-27T15:39:34.940 回答