我正在创建具有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>";