首页 > 解决方案 > $_SESSION 似乎只保留最后一个值

问题描述

请在此处查看测试页面https://wintoweb.com/sandbox/question_3.php 我使用 $_SESSION 来存储数据库搜索的结果,但只有最后一个值存储在会话中。看起来后者在每次搜索时都被清空。

我之前在该服务器上使用过会话并且没有问题。我的代码可能有问题,但我无法弄清楚。session_start 在文件顶部调用。

<?php  
if(isset($_GET['search'])){

} else if(isset($_GET['display_this'])){
    $rets = getNames(); //The $rets will hold the value returned by your function getName(). 
    if(!empty($rets)){
        echo '</br><b>Your selections so far :</b></br></br>';
    }

    //But yet, only the last search is stored in the session (why?)   
    echo "Echo of session array : " . $_SESSION['author'] . "<br>";
}

function getNames(){
    $rets = '';
    if(isset($_GET['choices']) and !empty($_GET['choices'])){
        foreach($_GET['choices'] as $selected){
            $rets .= $selected . ' -- ';

    // This should add every $rets to the session array. Right?     
    $_SESSION['author'] = $rets; 
    //session_write_close();

        }
    }

    return $rets;
}
?>

我希望会话保留来自后续搜索的所有信息,但只存储最后一个值。

标签: phpsession-variables

解决方案


您每次都用新值覆盖您的 Session 数组。您需要附加到它,就像附加到$rets变量一样。

$_SESSION['author'] .= $rets;

推荐阅读