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

使用PHP与SQL从数据库动态生成无序列表仅返回最后一条数据求助

问题核心原因

  • 你在while循环中直接给$name_Interest变量赋值,每一次循环的新结果都会覆盖上一次的取值,循环结束后该变量只会保留最后一次查询到的兴趣标签,所以最终只能展示一条结果。
  • 你可以先直接在数据库中执行你的SELECT查询语句,确认返回的行数是否大于1,如果SQL本身仅返回1条结果,还需要检查两张表的外键关联逻辑、WHERE条件的匹配值是否正确。

修复代码示例

你只需要将查询到的所有兴趣标签存入数组,后续遍历数组输出即可:

$request2 = "SELECT `interest`.`name_Interest` 
            FROM `interest` 
            INNER JOIN `users` 
                ON `interest`.`ID_user` = `users`.`ID_user` 
            WHERE `pseudo` = '".$url_pseudo."'
            ";

$resultat2 = mysqli_query($connexion, $request2) or die (mysqli_error($connexion));

$nb_resultat2 = mysqli_num_rows($resultat2);
$interestList = []; // 初始化空数组存储所有兴趣标签
if ($nb_resultat2 > 0) {
    while ($row = mysqli_fetch_array($resultat2)){
        // 把每个查询到的兴趣标签追加到数组,不会覆盖之前的结果
        $interestList[] = $row["name_Interest"];
    }
}

// 前端输出示例,遍历数组渲染所有标签
foreach($interestList as $tag){
    echo '<span class="interest-tag">'.$tag.'</span> ';
}

额外安全优化建议

你当前的SQL语句直接拼接变量$url_pseudo存在SQL注入风险,建议改成参数化查询写法:

$stmt = mysqli_prepare($connexion, "SELECT `interest`.`name_Interest` FROM `interest` INNER JOIN `users` ON `interest`.`ID_user` = `users`.`ID_user` WHERE `pseudo` = ?");
mysqli_stmt_bind_param($stmt, "s", $url_pseudo);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

$interestList = [];
while($row = mysqli_fetch_assoc($result)){
    $interestList[] = $row['name_Interest'];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:45:05