みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLのDateTimeにPHPで値セットは?

初歩的な質問ですみません。

MySQLにとあるテーブルがあって、
その中に 更新日時 という DATETIME 型のフィールドがあるのですが、
insert でレコードを追加する際にそこに現在日時をセットしようとして、
恥ずかしながらその方法がわかりません。

$sql = sprintf('INSERT INTO %s SET %s="%s", %s="%s"',
        'tmp',
        'mailAddr', e($mailAddr),
        'update', date('Y/m/d H:i:s'));
mysql_query($sql);

とか、

$sql = sprintf('INSERT INTO %s SET %s="%s", %s=cast(now() as datetime)',
        'tmp',
        'mailAddr', e($mailAddr),
        'update');
mysql_query($sql);

とか、いろいろ調べて試してみたんですけど...。

上記のように、insert into xxx set~ を使う場合を知りたいです。

すみません。
よろしくお願いします。

投稿日時 - 2014-10-26 10:25:28

QNo.8803441

すぐに回答ほしいです

質問者が選んだベストアンサー

update は予約語です。update を `update` と記述すれば動作するはずです。

投稿日時 - 2014-10-26 11:40:58

お礼

回答をありがとうございました。

ご指摘のとおりでした。

分かっていると当たり前のことなんですが、
日々、こういった初歩的なところでつまづきつつ勉強中です。
勝手にシステム担当とかにされて大変です。はい。

これで次に進めます。
ありがとうございました。

投稿日時 - 2014-10-26 12:33:08

ANo.2

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

普通に カラム名 = '(Y/m/d H:i:s形式)' で出来るハズです。もちろん カラム名=now() でも問題なく挿入されます。

#phpMyAdminで挿入して確認しました。phpの質問じゃなくて
#MySQLの(SQLの書き方の)質問ですしね。

もし「出来なかった」ということであれば、「出来ない」だけではなくどうなったのか(何らかのエラーが返るのか、違う値が挿入されるのか)を書いてください。


なお、ネイティブなMySQL関数はすでのオワコンです。PDOなどで書き直してください。

http://www.php.net/manual/ja/mysqlinfo.api.choosing.php

投稿日時 - 2014-10-26 11:29:28

お礼

早速回答をいただいて、ありがとうございます。

原因は No.2 の bx2 さんに指摘されたように、
予約語 update をフィールド名に使っていたからだったようで...。

PDO、リンク先を拝見しました。
オブジェクト指向のアプローチですね。
最近、C# とかもかじる(かじらされる)機会があり、勉強中です。
やっぱりちゃんとこういう方法でプログラミングしたいので、
PHP でもオブジェクト指向を勉強していこうと思います。

ありがとうございました。

投稿日時 - 2014-10-26 12:29:01