我正在尝试将会话变量传递给下一页,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);
}
}
}
?>
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>
答案 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'];
根据您的代码会话结果变量不是数组