LIKE子句在wordpress中的$ wpdb-> prepare()中不起作用

时间:2015-09-13 18:32:39

标签: php mysql wordpress

我正在使用LIKE子句创建简单的搜索脚本。 下面是使用php的LIKE子句的简单查询。

$rows = mysql_query("select * from description where tags like '%{$keyword}%'");

以上查询工作成功。但LIKE条款不适用于$wpdb->prepare()。以下是

的代码
$rows = $wpdb->get_results($wpdb->prepare("select * from description where tags like '%{%s}%'",$keyword));

我在这里缺少什么?

3 个答案:

答案 0 :(得分:0)

我通常使用sprintf,并做类似的事情。

global $wpdb;
$querystr = sprintf(
"SELECT * FROM description WHERE tags LIKE '%%%$s%%'"
mysql_real_escape_string($s)
)
$rows = $wpdb->get_results($querystr, OBJECT);
echo "</pre>"; print_r($rows); echo "</pre>";

答案 1 :(得分:0)

您需要转义%字符

答案 2 :(得分:0)

试试这个:

$param = "%{$keyword}%";
$stmt = $db->prepare("SELECT * FROM description WHERE tags LIKE ?");
$stmt->bind_param("s", $param);
$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_NUM)) {
  foreach ($row as $r) {
    print "$r ";
  }
  print "\n";
}