从php时间戳中获取月份名称



我有一个将php时间戳存储为整数的表。我需要按日期和年份访问这些数据。我可以抓取年份并将其与表中存在的列行匹配,但需要从时间戳中获取月份名称。

目前为止的代码

$query="SELECT * FROM archive_agent_booking
    WHERE agent_id='$account_no'
    AND (MONTHNAME(comp_date)='$month' AND year='$year' AND details='')
    ORDER BY order_time";

很遗憾,这没有返回任何结果。

comp_date是包含

时间戳的列。

您需要首先使用FROM_UNIXTIME将其转换为日期

MONTHNAME(FROM_UNIXTIME(comp_date)) = '$month'
  • FROM_UNIXTIME ()

作为旁注,如果值(s)来自外部,则查询容易受到SQL Injection的攻击。请看看下面的文章,了解如何防止它。通过使用PreparedStatements,你可以避免在值周围使用单引号。

    如何防止SQL注入在PHP?

您只需要将其包装在FROM_UNIXTIME()中,以将其首先转换为MONTHNAME()所需的MySQL DATETIME

AND MONTHNAME(FROM_UNIXTIME(comp_date)) = '$month'

如果您在这个项目中足够早,可以稍微改变一下方向,我建议将值存储为适当的DATETIME类型,而不是Unix时间戳的int值。MySQL能够更好地本地处理日期类型,而不必一直使用UNIX_TIMESTMAP(), FROM_UNIXTIME()转换。

我们假设您的值$month是正确转义的,如果它来自用户输入。否则,请考虑切换到支持准备语句的API,如MySQLi或PDO。

相关内容

  • 没有找到相关文章

最新更新