我使用ID而不是用户名,因为我发现它们更易于处理,因此,当我要显示用户名时,需要首先访问数据库。
$userid = $_SESSION['userid'];
$sql = "SELECT * FROM users.users WHERE id = $userid";
$user = $pdo->query($sql);
$username = $user['name'];
但是这样做时出现错误:Uncaught Error: Cannot use object of type PDOStatement as array
。从理论上讲,我的代码应将$userid
设置为当前登录用户的ID,在users.users
中选择相应的行,并将$username
设置为name列,然后我就可以使用它。如何将PDOStatement转换为可用状态?
答案 0 :(得分:3)
PDO::query返回一个PDOStatement
对象,要从中获取值,您需要执行一个fetch
:
$userid = $_SESSION['userid'];
$sql = "SELECT * FROM users.users WHERE id = $userid";
$stmt = $pdo->query($sql);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
$username = $user['name'];