dongpeng0127
2015-09-27 03:37 阅读 52
已采纳

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

I'm using a mySQL statement in a PHP script to return the email address for a given user. You'll see the function below:

    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());
    }
}

This returned an array with two elements, both being the correct email address. I changed the return statement to

    return implode(array_unique($emailAddress)); 
which solved the problem, but there has to be a better way to do this. This seems like pretty elementary stuff, and I'd like to do it right. What's wrong?
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    dongmi8980 dongmi8980 2015-09-27 13:41

    The problem is that the default response type of fetch is

    PDO::FETCH_BOTH (default): returns an array indexed by both column name and 0-indexed column number as returned in your result set

    I also find this quite confusing.

    Specify the parameter fetch_style to either PDO::FETCH_ASSOC or PDO::FETCH_OBJ to get what you would expect.

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

    Hope this helps

    点赞 评论 复制链接分享

相关推荐