如何检查它是否出现两次,并在foreach循环中保留数据库中的电子邮件地址



你好,我从数据库中有一个选择,现在我将所有记录存储在变量$list中。。在我的数据库中,我有更多具有相同电子邮件地址的帐户如何存储在变量$list中。。

我有这个代码:

<?php foreach($list as $li){                    
echo $li['email'].'<br>';
}?>

在mysql中,我有这样的:

public function getEmailAddress(){
$sql = "SELECT email FROM account.account";
$stmt=$this->o_db->prepare($sql);
$stmt->execute(array(':apply' => $apply));
$result = $stmt->fetchAll();
return $result;
}

在查询mysql选择中,我需要一个条件还是在php代码中?

如果你想要的是跳过任何重复的电子邮件地址,下面是你可以做的。


只需在查询中使用DISTINCT关键字。

$sql = "SELECT DISTINCT email FROM account.account";

或者,您可以使用PHP。

<?php 
$processed_emails = [];
foreach($list as $li){
$email = $li['email'];
if(!in_array($email, $processed_emails)) {
echo "{$email}<br>";
$processed_emails[] = $email;
}
}
?>

或者,您可以使用PHP的array_unique()函数。

<?php 
$list = array_unique($list);
foreach($list as $li){                    
echo $li['email'].'<br>';
}
?>

注:

您的代码可能因此而失败:$stmt->execute(array(':apply' => $apply));。您正在随查询一起发送一个参数,但您的查询没有参数。由于您没有参数,因此也不需要$stmt=$this->o_db->prepare($sql);

然后你的代码应该是:

$sql = "SELECT email FROM account.account";
$stmt=$this->o_db->query($sql);
$result = $stmt->fetchAll();