我正在尝试将记录添加到其中一个表中。根据输入的信息,其中一列将填写未来日期,有时是一个月,有时是一年。
我使用CURDATE()+ INTERVAL 1 MONTH / YEAR来获取未来日期。
但是,添加记录时,日期显示为毛坯。
这是我正在使用的代码:
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)但我得到的结果相同。
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:0)
这可能有点hacky,但是因为你没有在特定的插入语句中使用任何用户输入的参数并不可怕。
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->execute();
不一定与您的问题相关,但您应该考虑清理变量,如果它们是从$ _POST进来的,还包括邮政类型的默认情况,因为如果没有指定月份或年份,您的变量将赢得&#39 ; t被添加导致插入失败。