【问题标题】:WHERE DateInterval could not be converted to stringWHERE DateInterval 无法转换为字符串
【发布时间】:2014-08-01 02:34:35
【问题描述】:

在我的数据库中,我将 day 设为 int。比我得到的 $diff 是 DateTime。

$diff->format("%d"); 

SELECT * FROM smt WHERE day = $diff

即使我以前使用格式,它仍然给我这个:

可捕获的致命错误:DateInterval 类的对象无法在...中转换为字符串

感谢您的回答,希望我没有遗漏一些愚蠢的东西。

【问题讨论】:

    标签: php mysql format


    【解决方案1】:

    $diff 是一个DateInterval 对象,因此不能作为字符串进行插值或连接,因为它没有字符串表示形式。我相信您正在尝试从 DateInterval 的 format() 方法中插入结果。

    试试:

    "SELECT * FROM smt WHERE day = " . $diff->format('d');
    

    如果$diff 始终是一个 DateInterval 对象,则此处的此查询应该不会受到 SQL 注入的影响,但是您应该使用 MySQLi 或 PDO 的参数化查询。

    【讨论】:

    • 非常感谢,你拯救了我的心情。将标记为答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    相关资源
    最近更新 更多