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


LIKE clause is not working in $wpdb->prepare() in 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));

我在这里错过了什么?

您需要转义%字符,

try this:

$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";
}

我通常使用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>";