首页 > 解决方案 > 尝试将列的内容设置为变量时出现错误“无法将对象用作数组”

问题描述

我使用 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为名称列,然后我可以使用它。如何将 PDOStatement 转换为可用?

标签: phpmysql

解决方案


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

推荐阅读