PHP 多重搜索查询返回所有行

标签 php mysql

问题是我正在尝试获取特定的搜索结果,但它给出了所有数据库行,而不是过滤后的结果。我怎样才能避免这种情况?

require_once 'db/connect.php';

if(isset($_GET['submit'])){
    $doctor = $db->escape_string($_GET['doctor']);
    $specialization = $db->escape_string($_GET['specialization']);
    $hospital = $db->escape_string($_GET['hospital']);

    $query = $db->query("
         SELECT docname, specialization,hospital
         From doctor
         WHere docname Like '%{$doctor}%' or
         specialization like '%{$specialization}%' or
         hospital like '%{$hospital}%'
        ");
?>




<div class="result-count">
    Found <?php echo $query->num_rows; ?> results.
</div>

<?php

if($query -> num_rows){
    while($r = $query->fetch_object()){
        ?>
          <div class="result-count">
             <a href="#"><?php  echo $r->docname; ?></a>
          </div>
        <?php
    }
}
}

最佳答案

您必须从 WHERE 子句中删除未使用的字段。否则,hospital like '%%' 条件将有效匹配表中的每一行。

因此,在您的情况下,您应该动态创建查询,仅添加非空字段的条件。

当然它对打印结果查询有很大帮助。它不仅能让您了解您正在运行什么 SQL,而且>让你的问题变得合理。

关于PHP 多重搜索查询返回所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423234/

相关文章:

php - 如何使用返回自身实例的方法模拟别名类?

php - 我的 MySQL 查询不起作用

php - 如何解决 Lumen/Laravel 中的单例问题?

php - 使用变量作为外键 ID 将数据插入到 2 个表中

mysql - 使用 java eclipse 出现 MySQL 语法的罕见错误

mysql - 如何最好地处理带有嵌入式数据库的 Flyway 进行集成测试?

php - 如何将 php 下拉菜单链接到其他 php 并显示 mysql 数据?

php - 将用户照片添加到数据库

PHP 处理页面不工作

mysql - 最新 - 邮政编码数据库?