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 = 'アメリカ/ニューヨーク';

ありがとう、

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 に答える