В настоящее время я пытаюсь включить LIKE
в мой оператор выбора SQL и выньте соответствующее предложение MATCH / AGAINST.
Я пробовал много разных вариантов и чувствую, что мне чего-то не хватает, так как ни один из них, похоже, еще не работал.
Полная страница php
<?php
if(isset($_POST['searchQuery']))
{
require_once('config.inc.php');
$search_query=$_POST['searchQuery'];
$sql = 'SELECT * from tbl_fish where MATCH(fish_name,size_name,cat_name) AGAINST(:search_query)';
$statement = $connection->prepare($sql);
$statement->bindParam(':search_query', $search_query, PDO::PARAM_STR);
$statement->execute();
if($statement->rowCount())
{
$row_all = $statement->fetchall(PDO::FETCH_ASSOC);
header('Content-type: application/json');
echo json_encode($row_all);
}
elseif(!$statement->rowCount())
{
echo "no rows";
}
}
?>
Я пробовал подобные заявления
$sql = 'SELECT * from tbl_fish WHERE (fish_name LIKE '%'searchQuery'%')';
Но мне еще предстоит придумать рабочий. Эти результаты запрашиваются из приложения для Android, поэтому мне интересно, не упустил ли я что-то большее, чем просто изменение одного утверждения. Я следовал этому руководству, и все это работает, за исключением случаев, когда я пытаюсь изменить параметры запроса.
Надеюсь получить отзывы от вас, ребята. Благодарю.
Для построения правильного предложения вроде вы можете использовать concat
$sql = "SELECT * from tbl_fish WHERE fish_name LIKE concat ( '%', :searchQuery, '%')";
и для соответствия 3 столбца вы должны использовать ИЛИ
$sql = "SELECT * from tbl_fish
WHERE fish_name LIKE concat ( '%', :searchQuery, '%')
or size_name LIKE concat ( '%', :searchQuery, '%')
or cat_name LIKE concat ( '%', :searchQuery, '%');";
Других решений пока нет …