How to Use Wildcards in $wpdb Queries Using $wpdb->get_results & $wpdb->prepare?

I figured out a solution to my question.

First of all, in my original query, I should have specified OR instead of AND for searching between group names and group descriptions. (It was skewing the results.)

And I needed to double escape my ‘%’s in the LIKE statements.

Here is the updated query which works correctly:

SELECT * 
FROM {$wpdb->prefix}bp_groups 
WHERE `name` LIKE '%%%s%%'
OR `description` LIKE '%%%s%%' 
AND `status` = 'public'
ORDER BY `name` ASC

Example using $wpdb->query and $wpdb->prepare:

global $wpdb;
$wpdb->query( $wpdb->prepare(
    'DELETE FROM %s WHERE `option_name` LIKE %s',
    $wpdb->options,
    $wpdb->esc_like(PLUGIN_SLUG . '%%')
) );

Leave a Comment