php从其他页面返回多个变量

时间:2012-08-20 15:20:07

标签: php

我正在尝试创建一个包含返回“mf_id”值及其相应“制造商”值的链接的表。我可以一次做一个,但是当我尝试将两者结合起来时,问题就开始出现了。这是我到目前为止所做的:

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td><a href=\"list.php?mf_id&&Manufacturer=" . $row['mf_id'&&'Manufacturer'] . "\">" . $row['Manufacturer'] . "</a></td>";
echo "</tr>";
}

和另一页:

    $numb = $_GET['mf_id'];
$name = $_GET['Manufacturer'];
echo "<h1>$name</h1>";
$result=mysql_query("select * from Products where mf_id=$numb");

提前致谢!

3 个答案:

答案 0 :(得分:4)

因为您永远不会通过您的查询字符串传递Manufacturer,所以第二页无法通过GET访问它。此外,出于有效性目的,您的查询字符串值应通过urlencode()传递。

这一行:

echo "<td><a href=\"list.php?mf_id=" . $row['mf_id'] . "\">" . $row['Manufacturer'] . "</a></td>";

应该是:

echo "<td><a href=\"list.php?mf_id=" . urlencode($row['mf_id']) . "&Manufacturer=" . urlencode($row['Manufacturer']) . "'\">" . $row['Manufacturer'] . "</a></td>";

请注意:它可能无法解答您的问题,但您应该停止使用mysql_*功能。他们被弃用了。而是使用PDO(从PHP 5.1开始支持)或mysqli(从PHP 4.1开始支持)。如果您不确定使用哪一个,read this article

<强>更新

根据梅加尔的建议,我了解了http_build_query()。在将查询字符串写入URL时,这绝对是一种方法:

$data = array('mf_id' => $row['mf_id'], 'Manufacturer' => $row['Manufacturer']);
echo "<td><a href='list.php?" . http_build_query($data) . "'>" . $row['Manufacturer'] . "</a></td>";

答案 1 :(得分:1)

这根本没有任何意义:$row['mf_id'&&'Manufacturer']。这不是您访问数组的两个元素的方式。您将两个字符串与&&组合在一起,产生布尔true,并尝试访问$row[true]。你无法以这种方式访问​​数组。

如果您想同时使用这两个项目,则需要单独访问它们:

$row['mf_id'] . $row['Manufacturer']

如果你想构建一个包含这两个值的查询字符串,你应该使用http_build_query来处理数据的URL编码:

$query = http_build_query(array('mf_id' => $row['mf_id'], 'manufacturer' => $row['Manufacturer']));

echo '<td><a href="list.php?' . $query . '">' . $row['Manufacturer'] . '</a></td>';

请注意,如果您实际上只是选择了所需的字段,则不必在http_build_query的参数中明确指定它们。如果您的$row已只包含mf_idmanufacturer,则使用

就足够了
$query = http_build_query($row);

答案 2 :(得分:0)

您只是将mf_id传递到页面中,而您没有通过制造商。

编辑(因为您已更改代码)

变化:

while($row = mysql_fetch_array($result))
{
  echo "<tr>";
  echo "<td><a href=\"list.php?mf_id&&Manufacturer=" . $row['mf_id'&&'Manufacturer'] . "\">" . $row['Manufacturer'] . "</a></td>";
  echo "</tr>";
}

要:

while($row = mysql_fetch_array($result))
{
  echo "<tr>";
  echo "<td><a href=\"list.php?mf_id=".$row['mf_id']."&Manufacturer=" . $row['Manufacturer'] . "\">" . $row['Manufacturer'] . "</a></td>";
  echo "</tr>";
}