テーブルのいずれかにレコードを追加しようとしています。列の1つは、入力された情報に応じて将来の日付で埋められることが意図されています。時には1か月、場合によっては1年です。ダイナミックCURDATEとINSERT INTOの問題
CURDATE()+ INTERVAL 1 MONTH/YEARを使用して将来の日付を取得しています。
ただし、レコードを追加すると、日付は0000-00-00と表示されます。
これは私が使用しているコードです:
if ($_POST['type'] == "month") {
$expire = 'CURDATE() + INTERVAL 1 MONTH';
} else if ($_POST['type'] == "year") {
$expire = 'CURDATE() + INTERVAL 1 YEAR';
}
$insertSQL = 'INSERT INTO users (dateAdded, name, email, promoEndDate) VALUES (now(), :name, :email, :expire)';
$rsInsert = $pdo->prepare($insertSQL);
$rsInsert->bindParam(':name', $_POST['name'], PDO::PARAM_STR);
$rsInsert->bindParam(':email', $_POST['email'], PDO::PARAM_STR);
$rsInsert->bindParam(':expire', $expire, PDO::PARAM_STR);
$rsInsert->execute();
私は以前に結合することなくCURDATEを使用しているし、それが働いているが、私は、ユーザーの選択に依存する間隔を必要としています。
私は$ rsInsert-> bindValue( ':expire'、$ expire、PDO :: PARAM_STR)を使ってみましたが、同じ結果が得られました。
ご協力いただければ幸いです。
ありがとうございました。
準備文は、値を準備するためのものです。つまり、あなたの 'CURDATE()+ INTERVAL 1 MONTH'はmysql式ではなく文字列として扱われます。 –
ありがとうございました。私はbindParam行を削除し、$ expireを直接クエリ文字列に追加しました。出来た。 – cesarcarlos
これで質問に答えられます。 –