我尝试进行搜索,在数据库中查找姓氏或名字,然后让它返回这些值并将其回显。我已经走得那么远,但是当我遇到重复的条目(例如名字)时,我会遇到困难。
实施例;数据库中的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);}
只给我第一行而不给其他人
我已尝试过它和它的不同变体。希望任何人都可以提供帮助!谢谢!
答案 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)");