-1

これは簡単に解決できるはずです...

ユーザーがログインすると、これらの不動産があります。

    $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 をキーから削除するにはどうすればよいですか? ありがとうございました!

4

2 に答える 2

0

のドキュメントによると、fetchAll要素の配列が返されます。これは、基準に一致するテーブル内のすべての行を取得しているためです。あなたの場合、インデックス 0 にある 1 つの行だけが返されます。結果が 1 つだけ必要であることがわかっている場合は、fetch代わりにfetchAll. 0 を取り除きます。

于 2013-06-23T15:38:42.787 に答える
0

を使用していますfetchAll。これにより、一致したすべての行の DB 行の配列が得られます。

ループで使用fetchして、while個々の行を 1 つずつ調べます。

于 2013-06-23T15:39:22.783 に答える