You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用单查询从两个MySQL表获取特定用户数据的问题求助

解决方案:查询特定用户发布的帖子及用户信息

没问题,我来帮你调整这个查询。你的原始查询虽然能拿到数据,但用的是旧的表连接语法,而且没做用户筛选,我给你优化成更规范、安全的写法:

完整代码示例

// 假设用户表中存储用户名的字段是`username`,如果你的字段名是`name`或其他,请替换成对应的字段名
$query = $pdo->prepare("
    SELECT * 
    FROM `posts`
    INNER JOIN `tbl_users` ON `tbl_users`.`Id` = `posts`.`user_id_p`
    WHERE `tbl_users`.`username` = ?
    ORDER BY `posts`.`post_id` DESC
");

// 绑定要筛选的用户名参数,这里是"John"
$query->execute(['John']);

// 获取结果集
return $query->fetchAll();

关键说明

  • INNER JOIN 关联表:明确指定tbl_users.Id和posts.user_id_p的关联关系,确保只返回存在对应用户记录的帖子(和你原来的查询逻辑一致,但写法更清晰)。
  • 参数绑定:用?作为占位符,然后在execute()中传入用户名参数,这是PDO防止SQL注入的最佳实践,绝对不要直接把John拼接到SQL语句里。
  • 字段替换:如果你的用户表中存储用户名的字段不是username(比如是name),记得把tbl_users.username改成你实际的字段名。
  • 排序逻辑:保留了你原来的按post_id降序排序的需求,确保最新的帖子排在前面。

如果需要更灵活的筛选(比如根据用户ID而不是用户名),只需要把WHERE条件改成tbl_users.Id = ?,然后传入对应的用户ID参数即可。

内容的提问来源于stack exchange,提问作者Shivkesh Dwivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:26:32