我遇到了几个页面的问题:我想列出数据库中的所有图像(存储的网址),然后让用户点击图片,将图片带到另一个页面,然后提供其余的信息来自数据库。
我正在使用Session变量发送图像的ID,然后在另一页上使用该ID以在查看之前从数据库中选择信息。我遇到的问题是,它似乎总是显示数据库中最后输入的详细信息,而不是点击图像变量的实际信息。
我不确定这是哪里出错的,我已经添加了大量session_destroy()
命令,我认为这是最初的问题,但是没有解决问题,只是为了阻塞我的代码。
非常感谢任何帮助或指示。
这是我的代码:
第1页 - 通过会话发送变量
<?php
//code to access database
$query = "SELECT * FROM releases";
$result = mysql_query($query);
if(!$result) die ("Database access failed: " .mysql_error());
$rows = mysql_num_rows($result);
for ($j = 0 ; $j < $rows ; ++$j)
{
$row = mysql_fetch_row($result);
echo '<a href="test2.php"><img src="images/releases/' . $row[1] .'" id="' . $row [0] . '"/></a>';
}
$id = $row [0]; //"row 0" is the auto increment of the database id.
if (isset($_SESSION ['id'])){
session_destroy();
}
session_start();
$_SESSION ['id']= $id;
mysql_close($db_server);
?>
第2页 - 接收变量,然后使用它来访问数据库。
<?php
//code to access database
if (isset($_SESSION ['id'])){
session_destroy();
}
session_start();
$id = $_SESSION['id'];
$query = "SELECT * FROM releases WHERE release_id = $id";
$result = mysql_query($query);
if(!$result) die ("Database access failed: " .mysql_error());
$row = mysql_fetch_row($result);
echo "<img src='images/events/" .$row[1] . "' width= '150' height= '150' /> <br />";
echo "track title: " .$row[2] . "<br />";
echo "artist: " .$row[3] . "<br />";
session_destroy();
mysql_close($db_server);
?>
答案 0 :(得分:1)
看看你的代码在做什么:
for ($j ...) {
$row = mysql_fetch_row($result);
... do stuff with $row;
}
$id = $row[0];
您设置$id
AFTER 循环已终止,这意味着您只会从查询结果中获取最后项目。
即使您在循环中设置了$id
,您仍然只是在$ _SESSION中设置了一个SINGLE ID:
for ($j ...) {
$id = $row[0];
$_SESSION['id'] = $id;
}
当循环结束时,$ _SESSION将再次成为最后一个id。您正在做的事情 NOT 需要一个会话,只需一个查询变量:
for ($j ...) {
$id = $row[0];
echo "<a href='test.php?id=$id'>click me</a>";
^^^^^^^---note the query string....
}
然后在test.php页面中:
$id = $_GET['id'];