web-dev-qa-db-ja.com

wpdbが複数または条件付きで準備

私はこのようなクエリを実行したいです。

$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE '%%%s%%' or post_content LIKE '%%%s%%' )..., $string );

1つの条件のみを使用してクエリを実行すると、うまくいきます。

$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE '%%%s%%' )..., $string );

最初のクエリのエラーは何ですか?

1
user998163

あなたの最初の部分コードはこの部分コードだと思います。

$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE '%%%s%%' or post_content LIKE '%%%s%%' )..., $string, $string );

(%sを使って)指定したのと同じ数の引数をクエリに渡す必要があります。

2
$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);

これはクレジットuser998163から働きました

1
Ephraim Mwai