dongpeng0127 2015-09-27 03:37
浏览 76
已采纳

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 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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器