php - 尝试将列的内容设置为变量时出现错误“无法将对象用作数组”
问题描述
我使用 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 转换为可用?
解决方案
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'];
推荐阅读
- python - 带有嵌套布尔数组的logical_and
- mysql - Google Data Studio - MySQL 连接器错误的 Cloud SQL
- matrix - Xilinx Vivado_HLS 提供的线性代数库中的 QRF_ALT 函数中使用的算法是什么?
- mysql - 对一组医疗保健数据创建 4 个 SQL 查询,称为四切方法
- symfony - 访问 flashbag 表单 AbstractFormLoginAuthenticator
- python - 提取电子邮件和电话号码
- node.js - 为什么我的 PDF 文件从 Node.js 中的 PDF 数据字符串中保存时打开为空白
- java - 尽管有正确的python代码,但从nifi ExecuteScript处理器获取语法错误
- pandas - Pandas 中的分组比例
- angular - 如何在三元运算符上添加routerLink?