0

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

$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[];

但这只是使页面停止在其轨道上并出现空白屏幕。

这样做的原因是我想在不同的页面上插入这个会话中的值。

4

2 回答 2

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 将数组存储为会话变量没有问题,并且它们在其他页面上可用。

顺便说一句-您使用session_start()对吗?

更新:

  • do{...}while 总是至少执行一次作为最后的检查条件
  • while{...} 正好相反(在代码块内执行代码之前检查条件

您必须在此处使用后者,因为(例如)您的 SQL 查询可能返回空结果(无记录),因此您不应在 while 块内执行代码,因为没有要获取的数据。

于 2013-11-07T10:00:04.740 回答
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'];
}
于 2013-11-07T10:00:11.303 回答