我已经进行了一些查询,我必须在datetime字段中输入$ date的值。
我不知道我的查询有什么问题,我做错了什么?
我查看了我的字段,所有字段都是正确的。
由于
<?php
$duration = $custom['duration'];
$uid = $custom['uid']; // id of the user, can be 1,2,3 ...
$STH = $bdd->prepare('SELECT user_id FROM transactions WHERE user_id = :uid');
$STH->bindParam(':uid', $uid, PDO::PARAM_INT);
$STH -> execute();
$number_of_rows = $STH->fetchColumn();
$result = $STH -> fetch();
// On vérifie si l'user à déjà un compte prénium
if ($number_of_rows) > 0) {
$end = $result["end_subscription"]; // it's a datetime field
$date = new DateTime($end);
}else{
$date = new DateTime();
}
$date = new DateInterval('P'.$duration.'M');
$date = format('Y-m-d H:i:s');
$stmt = $bdd->prepare("UPDATE users SET end_subscription = ':end_subscription' WHERE id = ':uid'");
$stmt->bindParam(':end_subscription', $date, PDO::PARAM_STR);
$stmt->bindParam(':uid', $uid, PDO::PARAM_INT);
$stmt->execute();
?>
答案 0 :(得分:0)
不要将占位符放在引号中:
$stmt = $bdd->prepare("UPDATE users
SET end_subscription = :end_subscription
WHERE id = :uid");
您正在将列设置为文字字符串:end_subscription
,而不是替换参数。
您格式化日期的代码不正确。它应该是:
$interval = new DateInterval('P'.$duration.'M');
$date = new DateTime();
$future_date = $date->add($interval);
$date_string = $future_date->format('Y-m-d H:i:s');