1

データベースに行を挿入しようとしています。すべてのエントリは正しく挿入されますが、日付は次のように挿入されます。

0000-00-00

日付を手動でフォーマットしてみました:

        $updated = $a["updated"][0];

        $updated = explode(" ", $updated);
        $updated[1] = explode("/", $updated[1]);

        $y = date('Y');
        $m = $updated[1][1];
        $d = $updated[1][0];

        $updated = $y . '-' . $m . '-' . $d;

        $updated = strtotime( $updated );
        echo '<pre>'. $updated .'</pre>';
        $upd = date('Y-m-d', $updated);

        $a["updated"][0] = $updated;            
        echo '<pre>'. $upd .'</pre>';

これはvar_dump($ a)の出力です。

1342134000

2012-07-13

array(3) {
  ["metal"]=>
  string(6) "Silver"
  ["am"]=>
  array(3) {
    [0]=>
    string(7) "2748.00"
    [1]=>
    string(8) "1779.220"
    [2]=>
    string(8) "2253.200"
  }
  ["updated"]=>
  array(1) {
    [0]=>
    int(1342134000)
  }
}

mysql_date_formatも使用してみましたが、行がまったく挿入されていません。

$updated = mysql_date_format($updated);

これは私の挿入クエリです

mysql_query("INSERT INTO LondonFixes VALUES(null,'" . $a["metal"] . "','AM'," . $a["am"][1] . "," . $a["am"][0] . "," . $a["am"][2] . "," . $a["updated"][0] . ", null)");

これは私のテーブル構造です

    CREATE TABLE IF NOT EXISTS `LondonFixes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `Metal` varchar(10) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
  `AmPm` varchar(2) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
  `GBP` decimal(10,5) NOT NULL,
  `USD` decimal(10,5) NOT NULL,
  `EUR` decimal(10,5) NOT NULL,
  `Updated` date NOT NULL,
  `TimeStamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `Entry` (`Metal`,`AmPm`,`Updated`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=229 ;

これにはおそらく非常に簡単な解決策がありますが、私に気楽に行ってください!

4

1 に答える 1

2

月と日には先行ゼロが必要です。

使用する:

$upd = date('Y-m-d', $updated);

また、日付が文字列のように引用符で囲まれていることを確認してください。

,'" . $a["updated"][0] . "'

あなたのコードには、日付の引用符がありません。

于 2012-07-13T15:29:52.813 に答える