如何把MySQL表为会话变量,并使用下页表?(How to put MySQL table into

2019-10-29 17:20发布

我有两个PHP页面。 第一页上创建临时表,并充满了从MySQL数据库中的数据。 我想这个表存储到$ _SESSION变量,这样我可以把表到第2页。

眼下这一直是我的方法:

这是第1页上的代码的(部分):

ob_start();
session_start();

  //Select data from temporary table
$result = mysqli_query($mysqli,"SELECT * FROM table");


//store table into session variable
$_SESSION['fase1result'] = $result;

这是第2页上的代码:

ob_start();
session_start();

$table = $_SESSION['fase1result'];

echo "<table border='1'>
<tr>
<th>ProductID</th>
<th>ProductName</th>
<th>Fase1</th>
</tr>";

while($row = mysqli_fetch_array($table))
{
echo "<tr>";
echo "<td>" . $row['ProductID'] . "</td>";
echo "<td>" . $row['ProductName'] . "</td>";
echo "<td>" . $row['Fase1'] . "</td>";
echo "</tr>";
}
echo "</table>";

不幸的是,到现在为止这些脚本返回我的第2页错误。 此时,该表的第2页上的呼应是只是为了测试和验证表实际传递。 在稍后的时刻,我希望能够使用MySQL查询进一步数据添加到表。 希望你能帮助我。

更新:
那我得到的错误是:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in domain/page2.php on line 32

在第2页的存在线32:

while($row = mysqli_fetch_array($table))

为了更好地解释我的问题,我已经发布了另一个问题,可以在这里找到: 修改MySQL表在不同的页面带有得分从HTML表单

Answer 1:

第一页上创建临时表,并充满了从MySQL数据库中的数据。 我想这个表存储到$ _SESSION变量,这样我可以把表到第2页。

这不可能。

而且不应该反正使用。

出错了设计。 最有可能这样的表是多余的,你实际上并不需要它。

由于这一个背后的真正问题 - 更好地问另一个问题,解释现实生活中的任务,你决定使用页面之间传递临时表。



Answer 2:

一个回应你的问题之一:

错误你得到
你通常得到的错误是不正确的拼写或表名的参考,字段名或MySQL查询任何其他变量的结果。 根据你的情况,很可能是由于不正确的呼叫/存储您的会话变量。 例如,

//Instead of "table", you typed "tabel". This is just an example.
$result = mysqli_query($mysqli,"SELECT * FROM table");

分享你的代码,这样我可以尝试拿起这个错误。 以上只是一个例子。

在会话变量中存储的值不推荐
假设你的用户填写表单并移动到下一个阶段。 从第一阶段的数据通过会话变量转移到第二阶段。 如果用户直接关闭标签和重新启动的过程? 会话变量仍然会设置和以前的数据可以用新的干扰和可能产生意外结果。

理想的解决方案
这是更好地存储在JavaScript数组中的值,然后通过隐藏的输入字段转移到下一个页面。 一些使用这种逻辑的好处是:

  1. 快速的性能
  2. 更安全
  3. 易于管理

参考代码
如果是从HTML表单取值,那么它是非常简单的在POST值。 使用jQuery UI的选择,你可以在JavaScript阵列添加选定的值。

//Declare Global JavaScript Variable on Page Load. This will be at the end of <head>
$(document).ready(function() {
    window.fase1result = [];
} );

在此之后,要在其中添加数据的每个点击事件将要采取的下一个页面,使用下面的代码将值添加到该阵列。

fase1result.splice(indexOf_to_add, 1, "SelectedValue");

要了解.splice更好, 请点击这里 。

一个选择,在一个DIV或连结例如点击,将值添加到一个fase1result和上提交阵列值添加到输入通过使用以下隐藏:

添加JavaScript函数在表单的onsubmit。

<form id="myForm" method="POST" action="fase2.php" onsubmit="return fase1Values()">

添加<input type="hideen" name="fase1values_input" id="fase1values_id">形式。

下面是JavaScript onsubmit之前功能</body>

function fase1Values() {
    $( '#fase1values_id' ).val( JSON.stringify(fase1result) );
}

需要注意的是JSON.stringify是为了设置数组作为输入值必需的。

$decode_fase1result = json_decode( $_POST['fase1values_input'] );

现在,已经从第1页转移使用Array的FASE 1选择数据到第2页,而不以任何临时表中存储的数据。

希望这回答了你的问题和解决您的问题,以及。



文章来源: How to put MySQL table into session variable and using the table on next page?