如何用datetime变量更新我的表?

时间:2014-04-04 17:23:21

标签: php date

我已经进行了一些查询,我必须在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();
?>

1 个答案:

答案 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');