使用存储在数组中的记录集创建会话

时间:2013-11-07 09:49:36

标签: php arrays session recordset

如何获取记录集,将其存储在数组中,然后使该数组成为会话的值?这是我提出的代码(下面集成了答案):

$colname_getAC = "-1";
if (isset($_GET['tech_id'])) {
  $colname_getAC = $_GET['tech_id'];
}
mysql_select_db($database_localhost, $localhost);
$query_getAC = sprintf("SELECT area_code, tech_id FROM zip_zip WHERE tech_id = %s", GetSQLValueString($colname_getAC, "int"));
$getAC = mysql_query($query_getAC, $localhost) or die(mysql_error());
$row_getAC = mysql_fetch_assoc($getAC);
$totalRows_getAC = mysql_num_rows($getAC);
session_start();
// store session data
$_SESSION['area_code']= array();
while ($row_getAC = mysql_fetch_assoc($getAC)) {
  $_SESSION['area_code'][] = $row_getAC['area_code'];
}

这只会返回“数组”,而不是在我调用会话时的区号。

在会议上,我也尝试了这个:

$_SESSION['area_code']= $results[];

但是这只是让页面在空白的屏幕上停止了。

原因是我想在不同的页面上插入此会话中的值。

2 个答案:

答案 0 :(得分:1)

首先 - 你必须改变你的逻辑:

由此:

$results = array();
do {
  $results[] = $row_getAC['area_code'];
} while ($row_getAC = mysql_fetch_assoc($getAC));
$_SESSION['area_code']= $results;

到此:

$results = array();
while ($row_getAC = mysql_fetch_assoc($getAC))
{
   $results[] = $row_getAC['area_code'];
} 
$_SESSION['area_code']= $results;

我刚刚测试过 - PHP可以将数组存储为会话变量,并且可以在其他页面上使用。

BTW - 您使用了 session_start()吗?

<强>更新

  • 执行{...},同时始终至少执行一次作为最后的检查条件
  • while {...}完全相反(在代码块内执行代码之前检查条件

你必须在这里使用后者,因为(例如)你的SQL查询可能会返回空结果(没有记录)所以你不应该在while块中执行代码,因为没有数据可以获取。

答案 1 :(得分:1)

你把它存储为一个数组,你可以在这里看到它:

var_dump($_SESSION['area_code']);

我真的不明白,你究竟想要什么。

这也是错误的$_SESSION['area_code']= $results[];

<强>编辑: 将您的代码更改为:

$colname_getAC = "-1";
if (isset($_GET['tech_id'])) {
  $colname_getAC = $_GET['tech_id'];
}
mysql_select_db($database_localhost, $localhost);
$query_getAC = sprintf("SELECT area_code, tech_id FROM zip_zip WHERE tech_id = %s", GetSQLValueString($colname_getAC, "int"));
$getAC = mysql_query($query_getAC, $localhost) or die(mysql_error());
$totalRows_getAC = mysql_num_rows($getAC);
session_start();
// store session data
$_SESSION['area_code']= array();
while ($row_getAC = mysql_fetch_assoc($getAC)) {
  $_SESSION['area_code'][] = $row_getAC['area_code'];
}