phpでdate()で取得した値を$dateという関数に代入して、mysqlで見ると、本来は現在日時が反映されるはずですが、0000-00-00となってしまいます。なぜでしょうか?わかる方がいらっしゃいましたら、ご教授よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
計算された値が挿入されてしまってはいないでしょうか。
例えば以下のような引用符'
が付いていないソースコードだと、
2017-01-21
が計算式として解釈されてしまい
実際には 1995 という整数が挿入されてしまいます。
その結果、日付としては 0000-00-00 になってしまうというわけです。
php
1$date = date('Y-m-d'); 2mysql_query("INSERT INTO table (column) VALUE ($date);");
sql
1INSERT INTO `table` (`column`) VALUES (2017-01-21);
以下のように引用符で囲ってやれば解決するはずです。
php
1$date = date('Y-m-d'); 2mysql_query("INSERT INTO table (column) VALUE ('$date');");
MySQL :: MySQL 5.6 リファレンスマニュアル :: 9.1.3 日付リテラルと時間リテラル
数値として指定する値は、6、8、12、14 のいずれかの桁数にするようにしてください。数値を 8 桁または 14 桁の長さにすると、YYYYMMDD または YYYYMMDDHHMMSS 形式であり、最初の 4 桁が年であると想定されます。数値を 6 桁または 12 桁の長さにすると、YYMMDD または YYMMDDHHMMSS 形式であり、最初の 2 桁が年であると想定されます。これらの長さではない数字は、いちばん近い長さまで先行ゼロで埋められているかのように解釈されます。
この仕様により 1995 は 001995 と解釈されることになります。
日時コンテキストでの文字列リテラルと数値リテラル MySQL は次の形式で DATE 値を認識します。
(snip)
'YYYYMMDD' または 'YYMMDD' 形式の、区切り文字がない文字列 (日付として適切なもの) として。たとえば、'20070523' と '070523' は '2007-05-23' として解釈されますが、'071332' は正しくないため (月と日の部分が不適切)、'0000-00-00' になります。
この仕様により、 001995 が正しくないため '0000-00-00' になる、ということですね。
投稿2017/01/21 05:53
編集2017/08/09 12:00総合スコア580
0
以下の二つのサンプルをそれぞれ実行して、違いを確認してみてください。
php
1<?php 2 3ini_set('display_errors', 1); 4error_reporiting(E_ALL); 5 6echo date(); 7
php
1 2<?php 3 4ini_set('display_errors', 1); 5error_reporiting(E_ALL); 6 7echo date('Y-m-d');
投稿2017/01/21 05:09

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
質問内容に疑問がありますが、
phpでdate()で取得した値を$dateという関数に代入
mysqlで見る
とありますが、phpからmysqlでみる間にデータをmysqlへ登録していると思えばよろしいでしょうか?
0000-00-00
とは、MySQLの結果と考えればよろしいでしょうか?
勝手な解釈で回答させていただけますと
date() → date('Y-M-d'); とする。
と言うことでしょうか
MySQLが求める書式の場合には0000-00-00と表示されます。
質問と回答が一緒になってしましましたが、解消されますと幸いです。
投稿2017/01/21 05:55

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/21 06:29