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

如何获取并展示用户收到的其他用户提交的评价?附数据库表结构

搞定用户资料页展示关联评价的问题

嘿,我来帮你解决这个在用户个人资料页展示其他用户评价的问题!结合你给出的两张表结构,咱们一步步来:

1. 先搞定核心的数据库查询逻辑

要把评价和对应的评价者信息关联起来,咱们需要用JOIN把avis表和users表连起来——毕竟avis里的user_id是提交评价的人,关联users表就能拿到评价者的姓名、头像这些信息,这样展示的时候用户才知道是谁评的。

给你个现成的SQL查询语句,直接用就行:

SELECT 
    a.id AS avis_id,
    a.comment,
    u.id AS reviewer_id,
    u.name AS reviewer_name,
    u.photo AS reviewer_photo
FROM avis a
JOIN users u ON a.user_id = u.id
WHERE a.profile_id = :profile_id  -- 这里填当前访问的用户ID(就是被评价的人)
ORDER BY a.id DESC;  -- 按评价时间倒序,最新的评价放最前面

简单解释下:这条语句会把所有给指定用户(profile_id)的评价都查出来,同时带上每个评价者的基本信息,完美适配你的需求。

2. 后端拿数据的示例(以PHP/PDO为例)

假设你用PHP做后端,这里给你个获取数据的代码片段,你可以根据自己的框架调整:

// 先拿到当前访问的用户ID,比如从URL参数或者会话里取
$profile_id = $_GET['user_id']; // 比如你的资料页URL是user.php?user_id=123

try {
    // 连接数据库,替换成你自己的数据库信息
    $pdo = new PDO('mysql:host=localhost;dbname=你的数据库名', '用户名', '密码');
    // 准备刚才的SQL语句
    $stmt = $pdo->prepare("SELECT a.id AS avis_id, a.comment, u.id AS reviewer_id, u.name AS reviewer_name, u.photo AS reviewer_photo FROM avis a JOIN users u ON a.user_id = u.id WHERE a.profile_id = :profile_id ORDER BY a.id DESC");
    // 绑定参数,防止SQL注入
    $stmt->bindParam(':profile_id', $profile_id, PDO::PARAM_INT);
    $stmt->execute();
    // 把查询结果存成数组,方便前端用
    $reviews = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    // 出错了就提示一下
    echo "数据库出错啦: " . $e->getMessage();
}

这样$reviews数组里就存了所有该用户收到的评价,以及每个评价者的信息。

3. 前端展示评价的代码示例

拿到数据后,在用户资料页里循环展示就行,这里给你个HTML+PHP的混合示例,你可以改成你用的模板引擎(比如Blade、Twig):

<div class="user-reviews-section">
    <h3>大家的评价</h3>
    <?php if(empty($reviews)): ?>
        <p class="no-reviews">还没有人给TA评价哦~</p>
    <?php else: ?>
        <?php foreach($reviews as $review): ?>
            <div class="review-card">
                <div class="reviewer-info">
                    <!-- 评价者头像 -->
                    <img src="<?php echo $review['reviewer_photo']; ?>" alt="<?php echo $review['reviewer_name']; ?>" class="reviewer-avatar">
                    <!-- 评价者姓名 -->
                    <span class="reviewer-name"><?php echo $review['reviewer_name']; ?></span>
                </div>
                <!-- 评价内容,记得用htmlspecialchars转义,防止XSS攻击 -->
                <p class="review-content"><?php echo htmlspecialchars($review['comment']); ?></p>
            </div>
        <?php endforeach; ?>
    <?php endif; ?>
</div>

这里要注意用htmlspecialchars()处理评论内容,避免恶意脚本注入,安全第一!

几个容易踩坑的地方提醒你

  • 别搞反关联字段:是avis.user_id关联users.id,不是profile_id,不然就把被评价者的信息重复显示了
  • 处理空评价的情况:如果用户还没收到任何评价,要给个友好提示,别让页面空着
  • 权限控制(可选):如果需要的话,记得限制只有登录用户能提交评价,或者评价需要审核后再展示

内容的提问来源于stack exchange,提问作者Labelle Doriane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:56:56