将mysql_fetch_assoc结果序列化到另一个页面

时间:2012-02-14 21:50:13

标签: php mysql serialization

有没有办法通过POST将查询结果(作为数组)发送到另一个页面?

<?
$qry_string = "Select * from table where user_id=1";
$result = mysql_query($qry_string);
?>

现在,通常我会检查查询返回的每一行中的数据:

while($row = mysql_fetch_assoc($result))
{
  echo $row['some_column'];
}

但是,我想从另一个页面运行上面的行,因此需要将返回的查询结果发送到该页面。我该怎么做呢?我尝试使用以下命令序列化和反序列化数组:

<input type="hidden" value="<? print_r(serialize($project_data)) ?>" name="project_data" />

但是,当我去反序列化数组时:

$project_arr = unserialize(stripslashes($_POST['project_data']));

print_r($project_arr); // RETURNS NULL

// Error thrown here
foreach ($project_arr as $row) {
    $project_name = $row['project_name'];
    $project_type = $row['project_type'];
}

我收到以下错误:

Warning: Invalid argument supplied for foreach()

将查询结果发送到另一个PHP页面并读取行中的数据的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

如果你将PHP分成单独的文件(或者url,如果你正在使用mvc等),你可以从字面上的任何地方用ajax明确地调用该url,它会将数据返回给你。

否则你可以根据需要在$ _SESSION ['someKeyName']中设置该数组。从那时起,它将随处可用。

答案 1 :(得分:0)

您无法直接序列化对象,因为尚未获取查询中的所有数据。但是,您可以将所有数据提取到数组中,然后序列化:

$data = array();
while($row = mysql_fetch_assoc()) {
   $data[] = $row;
}

echo serialize($data);