【问题标题】:DateTime could not be converted to string PDO queryDateTime 无法转换为字符串 PDO 查询
【发布时间】:2015-04-05 13:27:20
【问题描述】:

我正在尝试将 1 个月添加到某个日期,然后保存新的 使用以下代码向数据库添加日期。但我似乎明白了 错误提示“无法将 DateTime 类的对象转换为字符串”

//New Expiration Date               
$expDate    = new DateTime('2015-06-05');
$expDate->add(new DateInterval('P1M'));
$newExpDate = $expDate->format('Y-m-d');

//Extend
$stmt = $this->connection->prepare(' UPDATE users SET valid_until = :new_expire_date WHERE user_id = :user_id ');
$stmt->execute(array(':user_id' => $expDate,':new_expire_date' => $newExpDate));

最后一行是引发错误的那一行。
当我var_dump($newExpDate)
我得到
string(10) "2015-07-05"

我觉得很奇怪,不知道有没有人 有什么想法...? 谢谢。

对不起,我的查询有误。我很惭愧:(

【问题讨论】:

  • $newExpDate 没有问题,但$expDate 有问题
  • 是的,我错了,谢谢!
  • 然后考虑结束你的问题:)

标签: php string datetime


【解决方案1】:

传递给PDOStatement::execute() 的值应该是scalars(字符串、整数、...)。您传递的第一个值 $newExpDate 是一个 DateTime 对象。

请改用$expDate->format('Y-m-d');

【讨论】:

    【解决方案2】:

    $expDate 不是字符串,它是日期时间对象。您已将 :user_id 分配为 $expDate。我想你打算在这里做点别的事情。 $newExpDate 是一个字符串,这部分语句似乎是正确的。重新查看您创建的数组的第一个元素,并确保这确实是您想要做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2012-04-29
      相关资源
      最近更新 更多