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

rxztt3cl  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(252)

你好,我有一个选择,从数据库和所有记录我存储在变量 $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代码?

wqsoz72f

wqsoz72f1#

如果你问的是一个方法,跳过任何重复的电子邮件地址,这里是你可以做的。
只需在查询中使用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();

相关问题