【问题标题】:PDO Prepared Statement Execution - How to get only associative keys?PDO Prepared Statement Execution - 如何仅获取关联键?
【发布时间】:2013-06-20 04:23:29
【问题描述】:

这应该是一件很容易解决的事情……

当用户登录时,我得到了这些资产:

    $query = $conn->prepare("SELECT * FROM admins WHERE username = :user AND password = :pass");    
    $query->bindValue(":user", $user);
    $query->bindValue(":pass", md5($pass));
    $query->execute();

现在如果用户存在,我就从数据库中返回用户信息,如果不存在,我就返回false……

    if($query->rowCount() > 0) {
        $admininfo = $query->fetchAll(PDO::FETCH_ASSOC);
    } else {
        return false;
    }

但是当我对变量 $admininfo 进行 var_dump 时,我会在实际数组之前得到一个带有数字键的数组......就像这样:

array (size=1)
  0 => <---- I DONT KNOW WHERE THIS COME FROM. I USED PDO::FETCH_ASSOC
array (size=9)
  'id' => string '1' (length=1)
  'username' => string 'admin' (length=5)
  'password' => string '21232f297a57a5a743894a0e4a801fc3' (length=32)
  'permissionid' => string '1' (length=1)
  'name' => string 'Administrador' (length=13)
  'lastname' => string 'Softing' (length=7)
  'phonenumber' => null
  'cellphonenumber' => null
  'info' => null

我会将这些信息放在 SESSION 数组中,所以我想通过 $_SESSION["admininfo"]["username"] 或 $_SESSION["admininfo"]["phonenumber"] 访问它

但我必须改为:$_SESSION["admininfo"][0]["phonenumber"]。

如何从键中删除 0?谢谢!

【问题讨论】:

    标签: arrays pdo associative


    【解决方案1】:

    根据documentationfetchAll,它将返回一个元素数组。这是因为它正在获取表中与您的条件匹配的所有行。在您的情况下,您只能返回位于索引 0 处的一行。如果您知道只需要一个结果,请使用 fetch 而不是 fetchAll。它将摆脱 0。

    【讨论】:

      【解决方案2】:

      您正在使用fetchAll。这将为您提供一个 DB 行数组——包含所有匹配的行。

      while 循环中使用fetch 逐行遍历各个行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 2014-12-17
        • 2014-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        相关资源
        最近更新 更多