将数组转换为变量以便在PHPMailer中发送

时间:2018-01-15 02:35:00

标签: php sql arrays pdo

我试图将具有另一个数组的数组从SQL select变成一个唯一的变量,由PHPMailer为用户发送它,我试图将数组放在PHPMailer的变量上,所以没有用,这就是为什么我尝试这种方式看起来有点困难

public static function getUsersByEmail($email) {
    $sql = DB::prepare(
        "SELECT username FROM users WHERE email=:email ORDER BY id LIMIT 10"
    );
    $sql->bindParam('email', $email);
    $sql->execute();
    $accounts = $sql->fetchAll(PDO::FETCH_ASSOC);
    return $accounts; // its array
}

public function recoverUsername($email) {
    if (User::emailHasAccounts($email) == true) {    
        $accounts = [User::getUsersByEmail($email)];               
        $str = implode(",", $accounts); // imploding array   

        $mail = new Mail([
            'email' => $email,
            'subject' => SITENAME,
            'template' => 'accountslist',
            'variables' => json_encode([
                'email' => $email, 
                'accountList' => $str, 
                'date' => date('d/m/y h:i')
            ]),
            'time' => time(),
            'next_attemp' => time(),
            'attemps' => 0,
            'status' => 0
        ]);

        // $mail->dbInsert();
        return true;
    } else {
        echo "erro";
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

解决方案(适用于PHP 5.5<)

$accounts = getAccounts();
$rr = array_column($accounts, 'username');
$array = implode(',', $accounts);

$getaccounts = array_map(function ($accounts) {
    return $accounts['username'];
}, $accounts);

$var = implode('<br>', $getaccounts);