尝试将列的内容设置为变量时出现错误“无法将对象用作数组”

时间:2019-04-06 11:40:20

标签: php mysql

我使用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转换为可用状态?

1 个答案:

答案 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'];