具有重复条目的PHP SQL搜索

时间:2014-11-13 20:24:32

标签: php sql arrays duplicates

我尝试进行搜索,在数据库中查找姓氏或名字,然后让它返回这些值并将其回显。我已经走得那么远,但是当我遇到重复的条目(例如名字)时,我会遇到困难。

实施例;数据库中的2个条目具有与Bill相同的FirstName值和不同的LastName值

如何返回所有具有相同名字值的?我尝试了多种解决方案,但一直未能得到它。我觉得自己错过了一些非常简单的事情,但我却失明了,无法看到它。

$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);}

只给我第一行而不给其他人

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

3 个答案:

答案 0 :(得分:1)

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

“三大”库(mysql,mysqli和PDO) NOT 可互换,而其他库中的连接/结果句柄在其他库中完全没用。

由于你正在使用pdo / mysqli,mysql_fetch调用将返回一个布尔值FALSE来表示失败,而不是数据数组。

答案 1 :(得分:0)

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

  

而($ F = mysql_fetch_array()){      $ FirstName = $ result ['FirstName'];

您将“$ f”指定为迭代器,然后指定echo $ 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>"; 
 }
} 

答案 2 :(得分:0)

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

("SELECT * FROM RWApplicants GROUP BY FirstName HAVING COUNT(*) > 1")

如果要获取具有重复FirstName

的所有行,请尝试此操作
("SELECT * FROM RWApplicants WHERE FirstName IN(SELECT FirstName FROM RWApplicants GROUP BY FirstName HAVING count(*) > 1)");