プロが教える店舗&オフィスのセキュリティ対策術

date型フィールドへのデータ挿入がうまくいきません。
PHP5.2.6,MySql5.0.51bを利用しています。
フィールドにdate型を指定して、phpからmysql_queryで"2010-1-1"というデータを挿入したところ"0000-00-00"として格納されていました。
phpMyAdminから「挿入」・「SQL」で"2010-1-1"を挿入したところちゃんと"2010-01-01"として格納されました。
phpから"2010-1-1"というデータを"2010-01-01"として格納するにはどうすればいいのでしょうか?
文字コードはphp・MySqlともにUTF-8を使用しています。

A 回答 (2件)

実際にどういうコードを書いているのでしょうかね?



MySQLでは、date型の列に対し、文字で'yyyy-mm-dd' や 'yyyy-m-d'などの形式で値を与えれば、自動的にキャストしてくれます。

phpでSQLの文字列を組み立てる時、
."2010-1-1".
なんてやってしまっていませんか?
「"」や「'」で囲んで文字定数にしないと、2010-1-1(=2008)というint型で引き算になっていると判断されてしまいます。
    • good
    • 0
この回答へのお礼

おっしゃるとおりでした。
'2010-1-1'とすることで正常に挿入できました。
お恥ずかしい限りです・・・。

お礼日時:2010/02/10 18:11

既に #1さんが言ってる通りなので、蛇足です。



○ 正しい書き方

inset into $Table ('aaaDate') value ('2010-01-01');
inset into $Table ('aaaDate') value ('2010-1-1');

○間違った書き方

inset into $Table ('aaaDate') value (2010-01-01);
↑数値として扱われ、演算結果をDate型に入れようとしている。

更に、もう一つ気がついたのは、実は 何も渡していないっていうオチ。
レコードが作られただけでも、Date型のフィールドには '0000-00-00'と入ります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!