PDOを使い、mysqlのdatatimeに、P現在時刻を登録するにはどうしたら良いのでしょうか??
// データベース接続完了
$date = new DateTime();
$date = $date->format('Y-m-d H:i:s');
$sql = 'INSERT INTO members(name,password,created) VALUES(:name, :password, :created)';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $_SESSION['name'], PDO::PARAM_STR);
$stmt->bindParam(':password', $_SESSION['password'], PDO::PARAM_STR);
$stmt->bindValue(':created', $date, PDO::PARAM_STR);←ここが分かりません!
$stmt->execute();
これでできるかな、と思ったのですが、できませんでした。
bindParamでも試しましたが結果は失敗……。
他の値は登録できており、createdだけnull値になってしまいます。
宜しくお願いします。
コメント(5件)
・実際のコードのコピペで質問してますか?
それとも、一部変えてたりとか
・「できません」の具体的な内容は?
書き込みでエラーが出る? それとも、期待した値ではなく別の値(何?)が入ってる?
他の値はインサートできているのに、createdだけnullの値が入っています。(null値にチェックが入っていました)
エラーは出ません。
実際のコードとはちょっとはしょってしまっていました、すいません。本物は、
$date = new DateTime();
$date = $date->format('Y-m-d H:i:s');
require_once 'dbmanage.php';
$pdo = getDb();
$sql = 'INSERT INTO members(name,password,picture,type,created) VALUES(:name, :password, :picture, :type, :created)';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $_SESSION['name'], PDO::PARAM_STR);
$stmt->bindParam(':password', $_SESSION['password'], PDO::PARAM_STR);
$stmt->bindParam(':picture', $_SESSION['img'], PDO::PARAM_STR);
$stmt->bindParam(':type', $_SESSION['type'], PDO::PARAM_STR);
$stmt->bindValue(':created', $date, PDO::PARAM_STR);
$stmt->execute();
データベース側の問題でしょうか……
打ち直したら、きちんと挿入できました……
お手を煩わせてしまい、本当にすいません。
何もかもが初めてで、これでできるかな、と思ったものがうまくいかないと「考え違いなのじゃないか」と質問してしまいました。
もっと根本的にきちんとコードを見直すよう気を付けます。
本当にありがとうございました。
おまけをふたつ。
http://stackoverflow.com/questions/1575601/datetime-now-php-mysql-pdo-variant?answertab=votes#tab-top
PHP でやるんじゃなくて、SQL 関数の NOW() を使う方法。
http://php.net/manual/ja/pdostatement.bindparam.php
bindParam と bindValue の違い。