Php 需要帮助调整select查询以将匹配/反对子句更改为Like子句吗

Php 需要帮助调整select查询以将匹配/反对子句更改为Like子句吗,php,mysql,sql-server,string-matching,sql-like,Php,Mysql,Sql Server,String Matching,Sql Like,我目前正在尝试将一个LIKE子句合并到我的SQL select语句中,并取出关联的MATCH/anthigh子句 我尝试了很多不同的版本,觉得我遗漏了一些东西,因为似乎还没有一款是有效的 完整的php页面是 <?php if(isset($_POST['searchQuery'])) { require_once('config.inc.php'); $search_query=$_POST['searchQuery'];

我目前正在尝试将一个
LIKE
子句合并到我的SQL select语句中,并取出关联的MATCH/anthigh子句

我尝试了很多不同的版本,觉得我遗漏了一些东西,因为似乎还没有一款是有效的

完整的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";
          }
    }
?>
但我还没有想出一个可行的办法。这些结果是从一个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, '%');";

非常感谢,但是现在我收到了一些Json错误,比如org.Json.JSONException:Value
类型java.lang.String,当我在android studio中进行测试时无法转换为JSONArray。这是什么意思?我该如何修复这最后一个错误与您发布的问题无关。。为此,您应该针对您的新问题专门发布另一个问题。。如果我的回答是正确的,那就把它标记为“已接受”听起来不错,再次感谢,伙计。因为我是新来的。下一个问题是什么?JSON相关吗?我建议PHP和JSON编码避免像sqlserver一样使用不正确的标记。。。。如果mysql不能成为sqlserver),我敦促您重新考虑。匹配可以使用索引,但像%something%something不能。如果你有几千条以上的记录,那么你的查询速度会非常慢。我最终会重新调整表和数据的用途,使之成为一个拥有190条左右记录的员工数据库,所以不会太长。你对这件事有什么看法是的,对于这么多的唱片,什么都可以!你甚至不需要主键!!(只是拿主键开玩笑)
$sql = "SELECT * from tbl_fish 
   WHERE  fish_name LIKE concat ( '%', :searchQuery, '%')
     or size_name   LIKE concat ( '%', :searchQuery, '%')
     or cat_name    LIKE concat ( '%', :searchQuery, '%');";