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

MySQL查询返回结果异常:始终仅获取最后一条记录问题求助

解决MySQL查询结果中所有记录复用最后一条文件夹名称的问题

我一眼就看出问题所在了——你第一个while循环的逻辑完全错了,导致$rep_header_activite最后只会保留最后一条类型记录的值,后面遍历活动图片时自然全用了这个最后值。

问题根源分析

你看这段代码:

while ( $data_type_activite = mysqli_fetch_array( $req_activite ) ) {
    $rep_header_activite = trim($data_type_activite['nom_type_activite']);
}

每次循环都会把$rep_header_activite覆盖成当前行的类型名称,循环结束后,变量里就只剩最后一行的nom_type_activite了,所以后面所有图片的路径都会用这个最后一个文件夹名。

高效解决方案:合并SQL查询

最简洁的方式是合并你的两个SQL查询,把类型名称直接关联到主查询里,这样一次查询就能拿到所有需要的数据,不用分开两次查询,也不会出现变量覆盖的问题。

修改后的完整代码:

<?php
require( '../core/libs/connexion.php' );

// 合并查询,一次性获取活动、画廊和对应的类型名称
$sql_mal = 'SELECT 
                G.*, 
                A.*, 
                T.nom_type_activite 
            FROM galleries AS G 
            LEFT JOIN activites AS A ON G.id_gallerie=A.fk_id_gallerie 
            LEFT JOIN type_activites AS T ON T.id_type_activite=A.fk_id_type_activite 
            WHERE A.fk_id_destination="2"';

$req_mal = mysqli_query( $connexion, $sql_mal )or die( mysqli_error( $connexion ) );

// 直接遍历主查询结果,每个活动都能拿到对应的类型名称
while ( $contents_mal = mysqli_fetch_array( $req_mal ) ) {
    // 直接从当前行获取类型名称,不用依赖外部变量
    $rep_header_activite = trim($contents_mal['nom_type_activite']);
    $id_de_activite = $contents_mal['id_activite'];
    
    echo '<div class="row"> 
            <div class="col s12 m3"> 
                <div class="card"> 
                    <div class="card-image small"> 
                        <img src="../00_sources/images/gallerie/activites/cards/'.$rep_header_activite.'/' . $contents_mal[ 'img_thumb' ] . '" alt="' . $contents_mal[ 'titre_prin_activite' ] . '"/> 
                    </div> 
                    <div class="card-action"> 
                        <span>' . $contents_mal[ 'titre_prin_activite' ] . '</span> 
                    </div> 
                </div> 
            </div>
        </div>';
}
?>

额外优化说明

  • 合并查询后,每条活动记录都会附带对应的nom_type_activite,彻底解决了变量覆盖的问题
  • 我把img的alt属性改成了活动标题titre_prin_activite,比用图片文件名更友好,符合SEO规范
  • 去掉了多余的global声明,你根本不需要把这些变量设为全局的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:53:49