Je veux exécuter une requête comme ceci:
$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE '%%%s%%' or post_content LIKE '%%%s%%' )..., $string );
Si je fais la requête avec une seule condition, cela fonctionne:
$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE '%%%s%%' )..., $string );
Quelle est l'erreur dans ma première requête?
Je pense que votre premier code partiel soit ce code partiel:
$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE '%%%s%%' or post_content LIKE '%%%s%%' )..., $string, $string );
Vous devez passer le même nombre d'arguments dans la requête que vous spécifiez (avec% s).
$like = '%'. $wpdb->esc_like($searchExpression) . '%';
$sql_content = $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE ( post_title LIKE '%%%s%%' or post_content LIKE '%%%s%%' )", $like, $like );
$post_id = $wpdb->get_var($sql_content);
cela a fonctionné à partir de crédits utilisateur998163