I am trying to use wordpress $wpdb in this way: 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); } Code (markup): The output of echo statement should be: but instead it shows: and when i change the code to include only 1 $arg it works in this way i.e. $query = $wpdb->prepare("SELECT post_date FROM " . $wpdb->posts . " WHERE post_name = %s;", sanitize_title_with_dashes($result[$i]->title)); Code (markup): It displays the output as under: which is not correct as it is the date of a draft or revision of the post i am trying to get the date of. Any help will be appreciated. Thanks.
It seems your query returns NULL. Have you checked what errors WordPress generates? $wpdb->show_errors(); Code (markup): $wpdb->print_error(); Code (markup): And I don't see a reason why you should should prepare the $pub variable. If it's not a user generated input, you can use it directly in your query: $query = $wpdb->prepare( "SELECT post_date FROM $wpdb->posts WHERE post_name = %s AND post_status = '$pub'", sanitize_title_with_dashes( $result[$i]->title ) ); Code (markup): Tip: If you only select one field in your query (post_date) you can use $wpdb->get_var instead of $wpdb->get_results. It returns a single variable instead of the object. Anyway, why do you use both echo and return in your function?