Web サイトをライブ検索しようとしていますが、結果を取得するための mysqli 準備済みステートメントが機能していません。次のコードがあります。
$value = $_POST['value'];
$query = $db->prepare("
select title from forums where title IN(?)
");
$value = explode(' ',$value);
$value = "'" . implode("','", $value) . "'";
$query -> bind_param('s',$value);
$query -> execute();
$query -> store_result();
$number = $query -> num_rows();
if($number == 0){
echo "No results found.";
}else{
$query -> bind_result($title);
while($query -> fetch()){
echo $title.'<hr>';
}
検索フレーズに含まれる単語の数がわからないため、使用できません。
IN(?,?,?,...)
フォーラム テーブルに「これはテスト フォーラムです」というタイトルのレコードがあります。しかし、名前を入力しても結果が表示されません。準備されたステートメントを正しく実行していますか?助けてください
アップデート
回答してコメントしてくれたすべての人に感謝します。私は最終的に次のコードを使用することになりました:
$value = $_POST['value'];
$query = $db->prepare("
select title from forums where match(title) against(?) OR name LIKE CONCAT('%',?,'%')
");
$query -> bind_param('ss',$value,$value);
$query -> execute();
$query -> store_result();
$numrows = $query -> num_rows();
if($numrows == 0){
echo "No results found";
}
else{
$query -> bind_result($title);
while($query -> fetch()){
echo '<hr>';
echo $title;
echo '<hr>';
}
}