PDO fetch / fetchAll

Не новичок в PHP, но только день до PDO. Конечно, я делаю что-то не так.

$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']; ?

fetchAll , как говорится в документации, извлекает массив из всех данных выборки одновременно. Поскольку вы используете FETCH_ASSOC , FETCH_ASSOC массив ассоциативных массивов. Если вы точно знаете, что возвращается только один столбец или интересуется только первым возвращенным столбцом, просто используйте fetch . В противном случае вам придется fetchAll результаты fetchAll или делать то, что вы сделали.

использовать:

 foreach( $result as $row ) { $_SESSION['user']['who'] = $row['who']; .... and so on }