Не новичок в 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 }