web-dev-qa-db-fra.com

wpdb prepare avec multiple ou condition

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?

1
user998163

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).

2
Charles Clarkson
$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

1
Ephraim Mwai