我正在尝试使用PHP通过会话将变量传递到下一页。下面的代码保存最后一个值。我想通过这个名字'当用户点击"更多信息"链接,在那里我将显示有关点击名称的更多信息。
<?php while ($r = $q->fetch()):
$city=$r['city'];
$phone=$r['phone'];
$name=$r['name'];
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$_SESSION['name'] = $name;
$_SESSION['phone'] = $phone;
$_SESSION['city'] = $city;
?>
<tr>
<td><?php echo (++$i); ?></td>
<td><?php echo htmlspecialchars($name) ?></td>
<td><?php echo htmlspecialchars($phone); ?></td>
<td><?php echo htmlspecialchars($city); ?></td>
<td> <a href="more_info.php" >More Info</a></td>
</tr>
<?php endwhile; ?>
答案 0 :(得分:2)
首先你需要把session_start()
放在脚本的顶部。并且永远记住$_SESSION
是超级全局变量。不需要传递给访问会话变量。你可以像这样访问。< / p>
echo $_SESSION['name'];
注意:确保
session_start()
应该是脚本的顶部。
如果你真的想将一个可变页面传递到另一个页面,请执行以下操作
<td> <a href="more_info.php?name=<?php echo $_SESSION['name']; ?>" >More Info</a></td>
和你的more_info.php
。
if (isset($_GET['name'])) {
$name=$_GET['name'];
echo $name;
}
给出答案可以解决OP问题,但是这不是在while循环中使用session的好习惯。因为你试图在会话中插入名字但是名字可能不同。我建议你尝试这样的事情。< / p>
卸下:
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$_SESSION['name'] = $name;
$_SESSION['phone'] = $phone;
$_SESSION['city'] = $city;
并像这样传递变量。
<td> <a href="more_info.php?name=<?php echo $name; ?>" >More Info</a></td>