2

PHPは初めてではありませんが、PDOは1日しか経っていません。確かに私はここで何か間違ったことをしています。

    $query = $conn->prepare("SELECT * FROM admins WHERE username = :username AND password = :password");
    $query->execute(array('username' => $username,'password' => sha1($password)));
    $result = $query->fetchAll(PDO::FETCH_ASSOC);
    if (count($result) > 0)
    {
        $_SESSION['user']['who']        = $result[0]['who'];
        $_SESSION['user']['email']  = $result[0]['email'];
        $_SESSION['user']['username']   = $result[0]['username'];
        echo REFRESH;
    }
    else
    {
        $message = "Invalid username / password.";  
    }

$_SESSIONSそれらを適切に宣言できる唯一の方法は、使用する場合です。$result[0]['fieldName'];どうすればアクセスできます$result['fieldName'];か?

4

2 に答える 2

9

fetchAllドキュメントにあるように、すべてのフェッチ データの配列を同時に取得します。を使用しているためFETCH_ASSOC、連想配列の配列がフェッチされます。1 つの列のみが返されていることが確実にわかっている場合、または返された最初の列のみに関心がある場合は、単に を使用してfetchください。それ以外の場合は、結果を反復処理するfetchAllか、実行したことを実行する必要があります。

于 2012-12-28T21:25:07.770 に答える
-1

使用する:

foreach( $result as $row )  
{  
    $_SESSION['user']['who']  = $row['who'];
    .... and so on
}
于 2012-12-28T21:23:39.400 に答える