将MYSQL表推送到另一个PHP页面

时间:2014-04-16 22:53:56

标签: php mysql arrays html-table session-variables

我有两个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来撕掉它阵列?很抱歉混淆了这个问题。

2 个答案:

答案 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识别它是一种好方法。