会话变量只调用mysql表的最后一个id


Session variable calls only the last id from mysql table

目前,我使用SESSIONS从不同的页面调用我的变量,其中使用while()语句从mysql数据库检索多个数据,到另一个页面。检索到的许多行具有从表中检索到的特定id。每一行都有一个链接,当您单击该链接时,该链接将带您到第2页,以显示使用该id的人的详细信息。例如在page1上,这些数据显示为

id | name
1  | Kamena
2  | aman
3  | Forfie

我在第1页的代码示例

session_start();
$stmt="select id,name from table1";
$result=$db->query($stmt);
while($row=mysqli_fetch_assoc($result)){
$id=$row['id'];
$name=$row['name'];
$_SESSION['id']=$id;
echo "<table>
            <tr>
                <td><a href='page2.php'>id</a></td>
                <td>name</td>
            </tr>
       </table>";
  }

在第2页,这是我的代码示例

session_start();
if (isset($_SESSION['id']))
    $id=$_SESSION['id'];
  $stmt="select id,name from table1 where id=$id";
  $result=$db->query($stmt);
  $row= mysqli_fetch_assoc($result);
  $perID=$row['perID'];
  $name=$row['name'];

这里的问题是,当链接,id是1与Kamena的名字,被点击到第2页的id返回3在第2页意味着,而它应该返回id等于1。拜托,我做错了什么吗?

是的,您正在写入SESSION['id']并每次覆盖它,因此仅存储最后一个值。你需要做这个…

$_SESSION['id'][$id] = $id;

这样您就可以访问它,并且可以将其作为键/值访问。

那么在你的下一页如果你想访问的id是7,你可以这样访问它。

 echo($_SESSION['id']['7']);

但是我看到的一个问题是,你不知道你点击了哪个ID才能进入下一页。在您的链接中,您需要以某种方式引用它,然后检查它是否在会话中。无论如何,这有点违背了SESSION变量的意义。因为你可以把它作为GET请求传递

一样,…

  <a href='page2.php?id=7'>PAGE 2</a>

在第二页…

 if(isset($_GET)){
  $id = $_GET['id'];
 }
 $stmt="select id,name from table1 where id=$id";
 $result=$db->query($stmt);
 $row= mysqli_fetch_assoc($result);

这是完全不推荐的,只是强调了你需要以某种方式将它传递到下一页的事实,而SESSION不是这种方式,因为你无论如何都需要一种方法来引用该会话。如果你知道我想说什么