【发布时间】:2016-10-02 06:58:07
【问题描述】:
我目前正在尝试将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 应用程序中查询的,所以我想知道我是否遗漏了一些东西,而不仅仅是更改了一个语句。我正在关注一个教程,除了我尝试更改查询的参数时,它都可以正常工作。
希望得到你们的一些反馈。谢谢。
【问题讨论】:
-
我敦促您重新考虑。匹配可以使用索引,但像 %something% 一样不能。如果您有超过几千条记录,您的查询速度将会非常缓慢。
-
我最终会重新调整表和数据的用途,使其成为包含 190 条左右记录的员工数据库,因此它不应该太长。你对此有何看法
-
是的,对于这么多的记录,一切正常!你甚至不需要主键!! (开玩笑的主键)
标签: php mysql sql-server string-matching sql-like