带有多个或条件的wpdb_preparate

时间:2013-09-09 作者:user998163

我想执行如下查询:

$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE \'%%%s%%\' or post_content LIKE \'%%%s%%\' )..., $string );
如果我只使用一个条件进行查询,它就会工作:

$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE \'%%%s%%\' )..., $string );
我的第一个查询中有什么错误?

2 个回复
最合适的回答,由SO网友:Charles Clarkson 整理而成

我认为你的第一个部分代码就是这个部分代码:

$wpdb->prepare( "SELECT * ... from ... WHERE ( post_title LIKE \'%%%s%%\' or post_content LIKE \'%%%s%%\' )..., $string, $string );
必须向查询中传递与指定数量相同的参数(其中包含%s)。

SO网友:Ephraim Mwai

$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);
这在Credits用户998163中起作用

结束