在我的MySql数据库中,post_time
字段的值已设置为NOT NULL DEFAULT CURRENT_TIMESTAMP
我使用以下MySql insert
语法和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';
谢谢,
答案 0 :(得分:1)
将post_time
设置为默认值CURRENT_TIMESTAMP
,MySQL将自动更新该列。除非要覆盖它,否则无需进行设置。
设置date_default_timezone_set()
对MySQL无关紧要 - 如果设置了自己的日期,则需要设置MySQL服务器的时区。
最后,您不应将post_time
隐藏字段放在表单中 - 您的服务器应该(A)生成此值,或者(B)让MySQL自动生成此值。
答案 1 :(得分:1)
您不应该插入这样的值,而是编写执行它的查询:
INSERT INTO entry (post, post_time) VALUES (?, UTC_TIMESTAMP())
您放置的值是您如何定义列,而不是如何插入值。