I'm doing the following in a custom function:
    $exists = $wpdb->query($wpdb->prepare('
    SELECT COUNT(*)
    FROM wp_%d_gdsr_data_article
    WHERE post_id = %d
', $blog_id, $post_id));
$exists evaluates to 1 even if no rows are returned by the query. Also, var_dump($wpdb->queries) yields a NULL. Anyone know what is going on here?
thanks,
For performing database operations WordPress provides a class wpdb which is present in the file – wp-includes\wp-db. php. This class abstracts the database functions for WordPress and most WordPress functions directly or indirectly use this class.
Below is an example of querying the database for posts within a category using WP_Query class. $query = new WP_Query( 'cat=12' ); The result will contain all posts within that category which can then be displayed using a template. Developers can also query WordPress database directly by calling in the $wpdb class.
From the documentation:
The function returns an integer corresponding to the number of rows affected/selected. If there is a MySQL error, the function will return FALSE. (Note: since both 0 and FALSE can be returned, make sure you use the correct comparison operator: equality == vs. identicality ===).
The query returns 1 row so the query() function returns 1 - and will always return 1 for the query that you post in your question, even if the number of rows selected by the COUNT is 0.  Use get_var, get_row, or get_results as suggested by TheDeadMedic to get the actual result of the query, which might be 0, 1, 2, etc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With