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