[WordPress] 句のようなワードプレスの prepare() -> $wpdb で動作していない

スポンサーリンク

質問

句のような台本を

私は簡単な検索を作成します。
以下は php を使用して、句のように単純なクエリです。

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

この上記のクエリは正常に動作します。しかし、句のような

$wpdb->prepare()

で動作していません。そのためコードを以下に

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

この不足しているんですか?

答え

% 文字をエスケープする必要があります。

答え

これを試みる:

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

http://stackoverflow.com/questions/32553143/like-clause-is-not-working-in-wpdb-prepare-in-wordpress

スポンサーリンク

Leave a Reply