需要帮助调整 select 查询以将 Match/Against 子句更改为 Like 子句
Need help tuning a select query to change a Match/Against clause to a Like clause
我目前正在尝试将 LIKE
子句合并到我的 SQL select 语句中,并删除关联的 MATCH/AGAINST 子句。
我尝试了很多不同的变体,但感觉我错过了一些东西,因为 none 似乎还有效。
完整的 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 应用程序中查询的,所以我想知道我是否遗漏了一些东西,而不仅仅是更改了那个语句。我正在学习这方面的教程并且一切正常,除非我尝试更改查询的参数。
希望得到你们的一些反馈。谢谢。
要构建合适的 like 子句,您可以使用 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, '%');";
我目前正在尝试将 LIKE
子句合并到我的 SQL select 语句中,并删除关联的 MATCH/AGAINST 子句。
我尝试了很多不同的变体,但感觉我错过了一些东西,因为 none 似乎还有效。
完整的 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 应用程序中查询的,所以我想知道我是否遗漏了一些东西,而不仅仅是更改了那个语句。我正在学习这方面的教程并且一切正常,除非我尝试更改查询的参数。
希望得到你们的一些反馈。谢谢。
要构建合适的 like 子句,您可以使用 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, '%');";