会话变量没有正确传递?

A session variable doesn't get passed properly?

所以,我试图设置一个 $_SESSION 变量并将其传递给另一个页面,但是另一个页面上的变量与它必须的变量不同。

petitionlist.php 中设置 $_SESSION['petitionNameT'] = $petitionName1;$petitionName1 的比赛因您选择点击的页面而异,它在 url id 中正确显示。


while($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)){
    $petitionName1 = $row['petitionName'];
    $_SESSION['petitionNameT'] = $petitionName1;
    echo "<tr><td><a href='petition.php?id=$petitionName1'>";
    echo $row['petitionName'];
    echo "</a></td><td>";
    echo $row['petitionTheme'];
    echo "</td></tr>";
}

但是当我们继续 petition.php 时,显示的结果与应有的结果大不相同,而且无论您单击哪一页,每一页都完全相同。


    <?php
    $petitionNameT = $_SESSION['petitionNameT'];
    ?>
    
    <div id="wrapper">
    
        <div id="contents">
    
            <h1 class="headers"><?php echo $petitionNameT?></h1>
            
            <p>
            
            </p>
    
        </div>
    
    </div>

举个例子:

点击第一页应该是petitionTest,结果是petitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetiti

点击第二页应该是petitionTest2,结果是petitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetiti

等等等等

P.S. petitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetiti 是可以点击的其中一个页面的名称。

P.S.(2) 我刚刚发现它采用了可能从数据库中单击的最后一页的名称。

鉴于您的代码 $_SESSION['petitionNameT'] 在循环的每次迭代中都会被覆盖,因此它将始终是查询中最后一行的 petitionName

您可能不想要会话。只需使用您在链接的查询字符串中包含的 id

while($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)){
    echo "<tr><td><a href='petition.php?id={$row['petitionName']}'>";
    echo $row['petitionName'];
    echo "</a></td><td>";
    echo $row['petitionTheme'];
    echo "</td></tr>";
}

然后在petition.php:

$petitionNameT = $_GET['id'];