PDO准备语句执行 - 如何只获取关联键?

时间:2013-06-23 15:31:02

标签: arrays pdo associative

这应该是一个简单的解决方法......

我在用户登录时收到了这些地址:

    $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;
    }

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

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?谢谢!

2 个答案:

答案 0 :(得分:0)

根据fetchAll的{​​{3}},它将返回一个元素数组。这是因为它使表中的所有行都符合您的条件。在您的情况下,您只返回位于索引0的一行。如果您知道只需要一个结果,请使用fetch而不是fetchAll。它将摆脱0。

答案 1 :(得分:0)

您正在使用fetchAll。这将为您提供一系列数据库行 - 所有匹配的行。

fetch循环中使用while逐个浏览各个行。