你好,mysql返回结果有问题。我总是获得最后一个记录行。我解释一下:我想获取文件夹的名称并搜索img对应。
这是我的代码:
<?php
require( '../core/libs/connexion.php' );
$sql_mal = 'SELECT * FROM galleries AS G LEFT JOIN activites AS A ON G.id_gallerie=A.fk_id_gallerie WHERE A.fk_id_destination="2"';
$req_mal = mysqli_query( $connexion, $sql_mal )or die( mysqli_error( $connexion ) );
global $id_de_activite,$rep_header_activite;
$sql_activite = 'SELECT nom_type_activite FROM type_activites AS T LEFT JOIN activites AS A ON T.id_type_activite=A.fk_id_type_activite WHERE A.fk_id_destination="2"';
$req_activite = mysqli_query( $connexion, $sql_activite )or die( mysqli_error( $connexion ) );
while ( $data_type_activite = mysqli_fetch_array( $req_activite ) ) {
$rep_header_activite = trim($data_type_activite['nom_type_activite']);
}
while ( $contents_mal = mysqli_fetch_array( $req_mal ) ) {
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[ 'img_thumb' ] . '"/>
</div>
<div class="card-action">
<span>' . $contents_mal[ 'titre_prin_activite' ] . '</span>
</div>
</div>
';
$id_de_activite = $contents_mal['id_activite'];
?>
它让我感到疯狂,因为最后一条记录已完全显示,但前一条记录获得了相同名称的文件夹
<img src="../00_sources/images/gallerie/activites/cards/plongee/canoe1521804672.jpeg" alt="canoe1521804672.jpeg">
文件夹类型的名称是在牌/
之后帮助我请求我不知道如何解决这个问题!
答案 0 :(得分:0)
您正在解析整个type_activites
请求,并且只保留最后一行:
while ( $data_type_activite = mysqli_fetch_array( $req_activite ) ) {
$rep_header_activite = trim($data_type_activite['nom_type_activite']);
}
然后,当您创建img标记时,您只使用rep_header_activite
中存储的标记,这就是它始终相同的原因。
您应该只进行一次SQL查询并在第一次加入该类型。然后在解析sql查询时可以访问它。像这样:
SELECT g.*, a.*, t.type_activites
FROM galleries g
LEFT JOIN activites a ON g.id_gallerie =a.fk_id_gallerie
LEFT JOIN type_activites t ON t.id_type_activite = a.fk_id_type_activite
WHERE a.fk_id_destination="2"
然后,您可以删除第一个while
循环,只需使用正确的访问者进行查询解析即可访问它:$contents_mal['nom_type_activite']