使用单查询从两个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
相关产品推荐
相关产品推荐

