Wordpress wpdb->准备奇怪的错误

时间:2014-06-01 20:33:09

标签: php mysql sql wordpress

我试图以这种方式使用wordpress $ wpdb:

function check_date($date) {

global $wpdb;

$pub = "publish";

 $query = $wpdb->prepare("SELECT post_date FROM " . $wpdb->posts . " WHERE post_name = %s AND post_status = %s;", sanitize_title_with_dashes($result[$i]->title), $pub);
    $cID = $wpdb->get_row( $query );

echo "". date("Y/m/d", strtotime($cID->post_date)) . " == ".$date. "<br />";

return (date("Y/m/d", strtotime($cID->post_date)) == $date);

}

echo语句的输出应为:

  

2014/05/31 == 2014/05/31

但它显示:

  

1970/01/01 == 2014/05/31

当我将代码更改为仅包含1 $ arg时,它就会以这种方式工作,即

 $query = $wpdb->prepare("SELECT post_date FROM " . $wpdb->posts . " WHERE post_name = %s;", sanitize_title_with_dashes($result[$i]->title));

它将输出显示在:

  

2014/06/01 == 2014/05/31

这是不正确的,因为它是我试图获取日期的帖子的草稿或修订日期。

任何帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:2)

显示

1970/01/01,因为您的查询失败。这是0日期; unix时间戳的开始。

无论如何,我怀疑你是否按预期使用了API,但我不知道wordpress,因此你需要亲自检查wordpress API。

答案 1 :(得分:0)

这篇文章:PHP strtotime returns a 1970 date when date column is null解释了您的问题。似乎额外的条件导致没有返回行,因此post_date中的NULL值。