0

phpのフォームを使用して日付をキャプチャし、unixtimeに変換してから、mysqlに挿入しています。問題は、2012年1月1日を挿入しようとすると、挿入されるのは2011年12月31日です。これは単純な問題であるに違いありませんが、助けを借りることができます。

これが私のフォームコードです:

<select name="mo">
   <?php 
   $arrMo = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
   foreach ($arrMo as $key => $value) {
       $option_val = intval($key) + 1;
    echo "<option value='" . $option_val . "'>" . $value . "</option>"; 
}

   ?>
   </select>  / 

   <select name="day">
   <?php 
   for ($b = 1; $b < 32; $b++) {
       echo "<option value='" . $b . "'>" . $b . "</option>\n";
   }
   ?>
   </select>  / 
   <select name="year">
   <?php $thisyear = date("Y");
   $thisyear = intval($thisyear);
   for ($c = 0; $c < 6; $c++) {
       $newval = $thisyear - intval($c);
       echo "<option value='" . $newval . "'>" . $newval . "</option>\n";
   }

   ?>
   </select>

それから私はそれをphpで変更します:

$timestamp =  $_POST['year'] . "-" .  $_POST['mo'] . "-" . $_POST['day'];
$timestamp = strtotime("Y-m-d H:i:s", $timestamp);//turn it into Unix time
$mysqldatetime = date("Y-m-d H:i:s", $timestamp);

次に、それをデータベースに挿入しようとします。

$q_location = "Insert into markers(MarkerID, lat, lng, street, neighborhood, date) values(" . $nextLocation . ", '" . $_POST['latitude'] . "', '" . $_POST['longitude'] . "', '" . addslashes($_POST['address_public']) . "', '" .   addslashes($_POST['neighborhood']) . "', FROM_UNIXTIME(" . $mysqldatetime . "))";

私が間違っていることを何か考えてください。

4

3 に答える 3

0

OK、答えは次のようになりました...挿入ステートメントの日付の周りに引用符がありませんでした。Gr. みんな、助けてくれてありがとう!

于 2012-10-28T22:34:06.917 に答える
0

SQL クエリで FROM_UNIXTIME を削除します。日付形式が既に Ymd H:i:s である場合は、この変数を直接 $mysqldatetime.

それ以外の場合は、タイムスタンプを FROM_UNIXTIME() 関数に渡す必要があります。

編集:

実際、あなたのタイムスタンプは間違っています:

$timestamp =  $_POST['year'] . "-" .  $_POST['mo'] . "-" . $_POST['day'];
$timestamp = strtotime("Y-m-d H:i:s", $timestamp);//turn it into Unix time
$mysqldatetime = date("Y-m-d H:i:s", $timestamp);

単純に次のように変更します。

$mysqldatetime = strtotime($_POST['year'] . "-" .  $_POST['mo'] . "-" . $_POST['day']);

$timestamp 行を必要とせず、SQL クエリをそのままにしておくことができるはずです。

于 2012-10-28T22:03:46.327 に答える
0

日は0ベースの変化に見える

$timestamp =  $_POST['year'] . "-" .  $_POST['mo'] . "-" . $_POST['day'];

$timestamp =  $_POST['year'] . "-" .  $_POST['mo'] . "-" . $_POST['day']-1;
于 2012-10-28T22:03:53.630 に答える