将会话变量传递给另一个页面

时间:2016-07-24 08:59:39

标签: php session mysqli

我正在尝试将会话变量传递给下一页,index.php,但我在foreach($_SESSION['result'] as $row)上得到了一个错误的未定义索引。我可以知道出了什么问题吗?

<?php
session_start();
$search = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']);
$search = $db->real_escape_string($search);

if (strlen($search) >= 1 && $search !== ' ') {
    $query = 'SELECT * FROM tablename WHERE name LIKE "%'.$search.'%"';
    $result = $db->query($query) or trigger_error($db->error."[$query]");


    while($results = $result->fetch_array()) {
        $resultArray[] = $results;
    }   

    if (isset($resultArray)) {
        foreach ($resultArray as $result) {
            $show_name = preg_replace("/".$search."/i", "<b class='highlight'>".$search."</b>", $result['name']);
            $show_url = 'index.php';
            $out = str_replace('name', $show_name, $html);
            $out = str_replace('url', $show_url, $out); 
            $_SESSION['result']= $result['name'];
            echo($out);
        }
    }
}
?>

的index.php

session_start();
<table>
<?php foreach($_SESSION['result'] as $row){ ?>
            <tr>
              <td>
                <?php echo $row['name'];?>
              </td>
              <td>
                <?php echo $row['description'];?>
              </td>
            </tr>
<?php } ?>
</table>

2 个答案:

答案 0 :(得分:0)

您永远不会在第一个文件中启动会话。使用

启动文件
<?php    
session_start();

因为您错过了这一点,当您在查询后为$_SESSION['result']分配值时,会话中不会保存任何内容。

还有另一个错误。你的意思是$_SESSION['result']是一个数组,但你将它保存为一个字符串。变化:

$_SESSION['result']= $result['name'];

$_SESSION['result'][]= $result['name'];

答案 1 :(得分:0)

如果$ _SESSION ['result']是一个数组,那么请尝试如下

$_SESSION['result'][]= $result['name'];

根据您的代码会话结果变量不是数组