pdo — функция php userInfo не работает

У меня проблема с моим PHP-скриптом. Мне нужно, чтобы получить всю информацию о пользователе. Я действительно не вижу, в чем проблема, но если я делаю echo $userInfo->username; это ничего не показывает. Я получил соединение с базой данных.

Функция userInfo ():

    function userInfo(){

try {
$stmt = $this->_db->prepare('SELECT * FROM members WHERE username = :username');
$stmt->execute(array('username' => $_SESSION['username']));

$row = $stmt->fetch(PDO::FETCH_OBJ);

$username = $row->username;
$firstname = $row->firstname;
$lastname = $row->lastname;
$worktitle = $row->worktitle;
$email = $row->email;
$admin = $row->admin;
$address = $row->address;
$city = $row->city;
$zipcode = $row->zipcode;
$phone = $row->phone;

return array(
'username'      => $username,
'firstname'     => $firstname,
'lastname'      => $lastname,
'worktile'      => $worktitle,
'email'         => $email,
'admin'         => $admin,
'address'       => $address,
'city'          => $city,
'zipcode'       => $zipcode,
'phone'         => $phone
);

} catch(PDOException $e) {
echo '<p class="warning">'.$e->getMessage().'</p>';
}
}

1

Решение

Ваша функция возвращает ассоциативный массив, но из вашего описания вы получаете доступ к возвращаемому значению как к объекту.

Если вы хотите получить доступ к возвращаемому значению как к объекту, напишите функцию следующим образом:

function userInfo() {
try {
$stmt = $this->_db->prepare('SELECT * FROM members WHERE username = :username');
$stmt->execute(array('username' => $_SESSION['username']));
$row = $stmt->fetch(PDO::FETCH_OBJ);  // fetch as object
return $row;
} catch(PDOException $e) {
echo '<p class="warning">'.$e->getMessage().'</p>';
}
}

$userInfo = userInfo();
echo $userInfo->username;  // object syntax

Если вы хотите получить доступ к возвращаемому значению как к массиву, напишите функцию следующим образом:

function userInfo() {
try {
$stmt = $this->_db->prepare('SELECT * FROM members WHERE username = :username');
$stmt->execute(array('username' => $_SESSION['username']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);  // fetch as array
return $row;
} catch(PDOException $e) {
echo '<p class="warning">'.$e->getMessage().'</p>';
}
}

$userInfo = userInfo();
echo $userInfo["username"];  // associative array syntax
2

Другие решения

Других решений пока нет …