php - 会话变量没有正确传递?
问题描述
所以,我试图设置一个 $_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
在第二页点击它应该是请愿测试2,但它是petitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetiti
等等等等
PS
petitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetitionNameTestpetiti
是可以点击的页面之一的名称。
PS(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'];
推荐阅读
- android - SharedPreferences Clear 不清除所有数据
- c# - Utf8JsonReader.ToString 给出:无法获取令牌类型“无”的值
- google-apps-script - 短时间内服务调用次数过多:日历。在通话之间尝试 Utilities.sleep(1000)。可以提高限额吗?
- swift - 金属可以实现交换链吗?
- typo3 - TYPO3 核心异常:“Id 超出域”而不是错误 404
- python - Python while 循环被跳过
- jenkins - 詹金斯“有条件的预期”
- ios - 如何在 Azure DevOPS 中的池中的特定代理上运行管道
- c++ - cuda 共享内存,内核中没有同步,内核过早输出
- javascript - Vue js比较2个对象并消除观察者的差异