具有重复条目的 PHP SQL 搜索


PHP SQL Search With Duplicate Entries

我正在尝试进行搜索,该搜索将在数据库中查找姓氏或名字,然后让它返回这些值并回显它们。我已经走了那么远,但是我陷入困境的地方是当有一个重复的条目(例如名字)时。

例如;数据库中的 2 个条目具有与帐单相同的名字值和不同的姓氏值

如何返回所有具有相同名字值的人?我已经尝试了多种解决方案,但无法获得。我觉得我错过了一些很容易的东西,但我是盲人,看不到它。

$query = $handler->query("SELECT * FROM RWApplicants GROUP BY FirstName HAVING COUNT(*) >= 1");
                        $r = $query->fetch(PDO::FETCH_ASSOC);
                        if($r){
                                echo "first";
                                print_r($r);}

只给我第一行,而不是其他

我已经尝试过它和它的不同变体。希望任何人都可以提供帮助!谢谢!

您正在混合数据库库。 使用 ->query() 表示您使用的是 PDO 或 mysqli。但是,然后您尝试使用mysql_fetch_array()获取实际结果行。

"三大"库(mysql,mysqli和PDO)是不可互换的,来自一个库的连接/结果句柄在其他库中完全无用。

由于您使用的是 pdo/mysqli,因此mysql_fetch调用将返回一个布尔 FALSE 来指示失败,而不是数据数组。

你有几个问题,但我看看我是否帮不了你。 可能是数据库访问的混合方法是问题所在,但代码本身也存在不规则性......

while($f=mysql_fetch_array()){ $FirstName =$result["名字"];

您指定"$f"作为迭代器,然后回显$result?

这是一个应该有效的更标准的方法:

$query = $handler->query("SELECT * FROM RWApplicants WHERE FirstName ='$Search'");
$r = $query->fetch();
if($r){
   while($f=mysql_fetch_array($r)){ 
       $FirstName  =$f['FirstName']; 
       $LastName=$f['LastName']; 
       $ID=$f['ID']; 
      echo "<ul>'n<li>" .$FirstName . " " . $LastName .  "</li>'n</ul>"; 
 }
} 

如果您尝试查找重复的名字条目,请尝试使用此条目

("SELECT * FROM RWApplicants GROUP BY FirstName HAVING COUNT(*) > 1")
如果您想

获取具有重复名字的所有行,请尝试此操作

("SELECT * FROM RWApplicants WHERE FirstName IN(SELECT FirstName FROM RWApplicants GROUP BY FirstName HAVING count(*) > 1)");