0

サーバーに日付を次の形式で送信しています: "01-01-1970"

日付を取得してフォーマットするためにこれを行います:

$datetime =  date('d-m-Y H:i:s', strtotime($_POST["date"]  . "19:31:30"));

次に、PDO を使用して、次のようにしてデータベースに送信します。

$stmt = $db->prepare("INSERT INTO events
            (runnerID,eventDateTime,duration,
            cost,address,city,country,
            postcode,description) VALUES
(?,?,?,?,?,?,?,?,?);
    ");
$stmt->execute(array($userID,$datetime,$_POST["duration"],$_POST["eventPrice"],
    $_POST["addressLine1"],$_POST["addressCity"],$_POST["addressCountry"],$_POST["addressPostCode"],$_POST["eventDesc"]));

しかし、データベースにアクセスすると、「0000-00-00 00:00:00」として保存され、列のタイプは「datetime」です

なぜこれが起こるのか誰か知っていますか?

4

3 に答える 3

3

date("Ymd H:i:s".....

$datetime =  date('Y-m-d H:i:s', strtotime($_POST["date"]  . " 19:31:30"));

...そして、時間の前にスペースがありません

于 2013-05-29T15:10:35.717 に答える
1

日時フィールドでは、値「$datetime」を一重引用符で囲む必要があります。これにより、フィールドが入力されます。私は同じ間違いを数回しました。

于 2013-05-29T15:14:22.467 に答える
0

$datetime 変数をエコーし​​て、クエリを実行する前に何が得られているかを確認してください。

また、検証されていない投稿値をデータベースに投稿しているため、SQL インジェクション攻撃に対して脆弱です。クエリを実行する前に、各投稿値を検証します。

フィルター入力 php ドキュメント

于 2013-05-29T15:15:12.130 に答える