PHP搜索过滤函数不使用';行不通

PHP搜索过滤函数不使用';行不通,php,mysql,mysqli,Php,Mysql,Mysqli,我在php表单中创建了搜索过滤器函数。从表中的mysql获取数据。所有的查询和其他都写得很好。但搜索功能不起作用 <?php require_once 'init.php'; include 'header.php'; include 'navigation.php'; if(isset($_POST['search'])){ $valSearch = $_POST['searchButton']; $query = "SELECT

我在php表单中创建了搜索过滤器函数。从表中的mysql获取数据。所有的查询和其他都写得很好。但搜索功能不起作用

<?php
    require_once 'init.php';
    include 'header.php';
    include 'navigation.php';

    if(isset($_POST['search'])){
      $valSearch = $_POST['searchButton'];
      $query = "SELECT * FROM mainTable WHERE CONCAT ('id','commandName','commandDesc','status') LIKE '%".$valSearch."%'";
      $featured = filterTable($query);
    }else{
      $query = "SELECT * FROM mainTable";
      $featured = filterTable($query);
    }

    function filterTable($query){
      $connect = mysqli_connect("localhost","root","","linuxcommanddictionary");
      $filter_result = mysqli_query($connect,$query);
      return $filter_result;
    }

 ?>
 <form action = "index.php" method="post">
    <div class="container">
      <h3>Linux Fedora OS</h3><hr>
        <button type="submit" name ="searchButton" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
        <input type="text" name = "search" class="form-control" placeholder="Хайх үгээ бичнэ үү">
        <div class="col-md-12">
            <div class="row">
                <table class="table table-bordered">
                    <thead>
                        <th>ID</th>
                        <th>Command Name</th>
                        <th>Command Description</th>
                        <th>Status</th>
                    </thead>
                    <tbody>
                      <?php while($result = mysqli_fetch_assoc($featured)): ?>
                      <tr>
                          <td><?=$result['id']; ?></td>
                          <td><?=$result['commandName']; ?></td>
                          <td><?=$result['commandDesc']; ?></td>
                          <td><?=$result['status']; ?></td>
                      </tr>
                      <?php endwhile; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</form>
<?php
    include 'footer.php';
 ?>
 </body>
 </html>

如注释中所述,您在函数内调用mysqli连接,然后在函数的“作用域”外请求mysqli_fetch_assoc()

  • 学习范围
  • 你可以 -将while循环移动到函数中,并返回数组的“副本”(内存占用)。 -或-
    在全局作用域中创建连接器,并在函数中调用“global”以获取数据(cpu吸盘)-或-将所有内容移动到全局作用域中的其他位置。

    既然您说没有任何错误,请尝试以下操作:

    1-通过phpmyadmin手动运行查询,查看是否得到任何结果

    2-将连接变量作为全局变量传递。阅读更多关于变量的内容,以更好地理解所涉及的概念

     function filterTable($query){
       global $connect;
          $connect = mysqli_connect("localhost","root","","linuxcommanddictionary");
          $filter_result = mysqli_query($connect,$query);
          // fetch results here as mysqli_query returns true/false.
          $final_results = array();
          while($row=mysqli_fetch_array($filter_result,MYSQLI_NUM)){
             $final_results[] = $row;
          }
          return $final_results;
        }
    

    3-打开错误报告以查看是否出现任何问题

    开发人员对此并不是很好的解释。您会遇到什么错误?另外,您似乎需要在筛选表中将连接变量作为全局变量传递。没有出现任何错误。另外:$valSearch=$\u POST['searchButton'];然后回应它,它说什么?那么:$valSearch=$_POST['search'];呢?你的问题太少了,我甚至试着编辑它,你甚至没有足够的“内容”可以编辑。请做你的家庭作业,这样我们才能更好地帮助你。谢谢明白:)
     function filterTable($query){
       global $connect;
          $connect = mysqli_connect("localhost","root","","linuxcommanddictionary");
          $filter_result = mysqli_query($connect,$query);
          // fetch results here as mysqli_query returns true/false.
          $final_results = array();
          while($row=mysqli_fetch_array($filter_result,MYSQLI_NUM)){
             $final_results[] = $row;
          }
          return $final_results;
        }