You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

wpdb::prepare()中日期与时间占位符传递的最佳实践咨询

关于wpdb::prepare()中DATE/TIME类型字段的占位符正确用法

你的示例代码里对_date(DATE类型)使用%d是不合适的,MySQL的DATE和TIME类型本质是字符串格式的日期时间值(DATE为YYYY-MM-DD,TIME为HH:MM:SS),正确的做法是统一用%s作为占位符。

修正后的代码:

wpdb->get_var( $wpdb->prepare( 
    "SELECT count(_id) FROM " . $this->get_table_name() . " WHERE _time=%s AND _date=%s", 
    $time, 
    $date 
) );

关键说明:

  • %s是wpdb::prepare专门用于处理字符串的占位符,会自动对传入的日期/时间字符串做SQL转义,既避免注入风险,又匹配MySQL DATE/TIME字段的存储格式。
  • %d仅适用于整数类型值,用在DATE/TIME字段上会引发类型不匹配,可能导致查询结果错误或转义异常。

另外要确保传入的变量格式符合MySQL要求:

  • $date必须是YYYY-MM-DD格式(如2024-05-20)
  • $time必须是HH:MM:SS格式(如14:30:00)

内容的提问来源于stack exchange,提问作者Karue Benson Karue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:52:05