0

mysql テーブルの列に日時を挿入しようとしています。

 <?php

//Some code

date_default_timezone_set('Europe/London');

//Other variables defined also

$date_time = new DateTime();


$queryreg = mysql_query ("

    INSERT INTO users VALUES ('','$username','$password','$email','$website','$image','$date_time')

    ");



?>

ただし、ブラウザーには次のように記載されています。なぜこれをやっているのですか?よろしくお願いします。

4

5 に答える 5

5
$date = $date_time->format('Y-m-d H:i:s');

INSERT INTO .... VALUES (..., '$date');
于 2012-12-14T15:06:37.837 に答える
1

これは、SQL クエリで $date_time を '' で囲んで文字列に型変換しようとしているためです。周囲の引用符を削除するか、次のようにして文字列に変換します。

$date_time->format('Y-m-d H:i:s');
于 2012-12-14T15:06:09.893 に答える
1

$datetime->format('Y-m-d H:i:s')次のように、挿入に使用する必要があります。

INSERT INTO users VALUES ('', '$username', '$password', '$email', '$website', '$image', '{$date_time->format('Y-m-d H:i:s')}')

また、関数を使用しないことをお勧めしますが、準備されたステートメントまたは少なくとも関数でmysql_*使用することを学びます。PDOmysqli_*

また、SQL インジェクションを防ぐために入力をサニタイズします。

于 2012-12-14T15:06:51.003 に答える
1

次のように、日付の文字列形式を指定します。

date_format(変数、"文字列形式")

たとえば、date_format($date_time, "%m/%d/%y")。

于 2012-12-14T15:10:25.017 に答える
0

最善の解決策は、デフォルト値 CURRENT_TIMESTAMP を使用してテーブルにタイムスタンプ フィールドを設定することです。

ただし、これを手動で制御したい場合は、DateTime オブジェクトを次のような文字列に変換する必要があります。

<?php
//Some code
date_default_timezone_set('Europe/London');

//Other variables defined also
$date_time = new DateTime();

$queryreg = mysql_query("INSERT INTO users VALUES
      ('','$username','$password','$email','$website','$image',
      '{$date_time->format('Y-m-d H:i:s')}')");
?>
于 2012-12-14T15:09:02.467 に答える