php - 每次执行查询时如何刷新会话变量

时间:2016-06-27 09:28:26

标签: php arrays session

我有一个搜索栏,当用户通过搜索栏搜索某个内容时,会执行查询并在屏幕上显示一些结果。

我将与结果相关的所有信息存储在多维session数组中。

每个结果都有链接,当用户点击此链接时,会打开新页面,显示该结果的完整信息。

搜索结果取决于用户输入的字词。

我的问题是:假设当第一次用户输入一些术语时它得到4个结果,与这4个结果相关的al信息存储在会话数组中,但是下次如果用户再次搜索会出现不同的结果但是会话数组仍然具有相同的旧值,因为当下一页打开时它显示该结果的不同信息(它显示基于最后结果的索引的信息)。

我的代码是:

<?
while($row = mysqli_fetch_array($sql))
{   
    $title = $row['title'];
    $description = $row['description'];
    $url = $row['content_url'];
    $icon = $row['thumb_icon_url'];
?>
<?php
$_SESSION['result'][$id]  = Array('title' => $title,'description'=> $description,'content_url' => $url,'icon' => $icon,'id'=> $id);
?>

新页面的代码:

<?php
if(isset($_GET['id']))
{
    $id = $_GET['id'];
    ?>   
    <div id="iframe" class="embed-responsive embed-responsive-16by9 col-md-9">                      
        <iframe  class="embed-responsive-item item" src="https://docs.google.com/gview?url=<?php echo $_SESSION['result'][$id]['content_url'];?>&embedded=true#toolbar=0&navpanes=0&scrollbar=0" frameborder="0"></iframe>
    </div>
    <?php
}?>

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,可能就是你所寻求的以下内容:

unset($_SESSION['result']);
$_SESSION['result'] = array();
while($row = mysqli_fetch_array($sql))
{
// do stuff
}

您需要在添加新会话数据之前重置会话数据。