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

标签 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 = $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(默认):返回按结果集中返回的列名称和 0 索引列号索引的数组

我也发现这很令人困惑。

将参数 fetch_style 指定为 PDO::FETCH_ASSOC 或 PDO::FETCH_OBJ 以获得您期望的结果。

http://php.net/manual/en/pdostatement.fetch.php

希望这有帮助

关于PHP mySQL 查询返回单个字段作为 2 元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32804339/

相关文章:

php - 如何在 MySQL 数据库中存储 60 个 bool 值?

PHP 日期减去 X 天

java - 如何从 HashMap 中删除值?

mysql - QT5 找到 MySQL 但在 Debian 上无法加载它

指向字符串的指针的 C 数组,从指针传递字符串

c - 无法从 int 值中提取字节数组值

php - 从 codeigniter 中的两个表中获取数据

php - 带有 PHP 代码的元素显示错误

php - INSERT 到 mysql 数据库准备语句

ubuntu 14.04 中缺少 phpmyadmin .htpasswd 文件