我有两个PHP页面。在page1上创建一个临时表,并用mysql数据库中的数据填充。我试图将此表存储到$_SESSION
变量中,以便我可以将表放到page2上。
现在这是我的方法:
这是第1页上的代码:
//Select data from database
$result = mysqli_query($mysqli,"SELECT * FROM table");
//Set array
$array = array();
while($row = mysql_fetch_assoc($result)){
// add each row returned into an array
$array[] = $row;
}
//store array into session variable
$_SESSION['fase1result'] = $array;
这是第2页上的代码:
$table = $_SESSION['fase1result'];
echo "<table border='1'>
<tr>
<th>ProductID</th>
<th>ProductName</th>
<th>Fase1</th>
</tr>";
foreach ($table as $row)
{
echo "<tr>";
echo "<td>" . $row['ProductID'] . "</td>";
echo "<td>" . $row['ProductName'] . "</td>";
echo "<td>" . $row['Fase1'] . "</td>";
echo "</tr>";
}
echo "</table>";
不幸的是,到目前为止,这些脚本在第2页上返回了一个空表。非常感谢帮助!
更新: 对我来说最好的事情就是按原样保留临时表,以便我能够在第2页上使用MySQL查询进一步操作它。你知道如何做到这一点而不是通过将数据拉入php来撕掉它阵列?很抱歉混淆了这个问题。
答案 0 :(得分:0)
在使用任何与会话相关的设施之前,您需要致电session_start()
。
session_start();
$_SESSION['fase1result'] = $array;
然后
session_start();
$table = $_SESSION['fase1result'];
请注意,在大多数情况下,您需要在任何输出之前调用session_start()
,因为它通常需要将Cookie:
标头发送到客户端浏览器,除非您配置了不同的会话持久性方法。如果不这样做,可能会导致已经发送了#34;#34;错误。
答案 1 :(得分:0)
正如tgies已经指出的那样,你需要初始化你的会话。
此外,您使用mysql_fetch_assoc()
即使您正在使用mysqli(至少对于查询),请使用while($row = $result->fetch_assoc())
或mysqli_fetch_assoc
函数(请注意i)。
编辑:还有其他几个选项,但在大多数情况下,将数据存储在单个持久表中并通过$ _SESSION中的ID识别它是一种好方法。