PHP mySQL查询返回单字段作为2元素数组

PHP mySQL查询返回单字段作为2元素数组,php,mysql,arrays,database,Php,Mysql,Arrays,Database,我在PHP脚本中使用mySQL语句返回给定用户的电子邮件地址。您将看到下面的函数: public static function getEmailAddress($username) { $conn = parent::connect(); $sql = "SELECT emailAddress FROM " . TBL_USERS . " WHERE username = '". $username ."';"; try { $st = $co

我在PHP脚本中使用mySQL语句返回给定用户的电子邮件地址。您将看到下面的函数:

    public static function getEmailAddress($username) {
    $conn = parent::connect();
    $sql = "SELECT emailAddress FROM " . TBL_USERS . " WHERE username = '". $username ."';";

    try {
        $st = $conn->prepare($sql);
        $st->bindValue("username", $username, PDO::PARAM_STR);
        $st->execute();
        $emailAddress = $st->fetch();
        return $emailAddress;
        parent::disconnect($conn);
    } catch(PDOException $e) {
        die("emailAddress lookup query failed: " . $e->getMessage());
    }
}
这返回了一个包含两个元素的数组,这两个元素都是正确的电子邮件地址。我把返回语句改为
    return implode(array_unique($emailAddress));

这解决了问题,但必须有更好的方法。这似乎是很基本的东西,我想把它做好。出什么问题了?

问题是fetch的默认响应类型是

PDO::FETCH_BOTH default:返回一个数组,该数组按结果集中返回的列名和0索引的列号进行索引

我也觉得这很令人困惑

将参数fetch_style指定为PDO::fetch_ASSOC或PDO::fetch_OBJ,以获得所需的内容


希望这有帮助

请发布示例表数据和两元素数组用户名是否有唯一约束?奇怪的是,对于看起来应该是唯一字段的字段,您得到了多行。而且,是否达到了断开连接?我问原因,它是在您返回$st->fetch之后返回一个布尔值,这就是您自己的函数返回给调用方的结果,那么您的数组在图中的位置呢?用户名确实有来自mysql和用户注册验证的唯一约束。而且,现在只有大约7个用户,所以我知道这不是一个复制问题。