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>";
}

和另一页:

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

提前致谢!

4

3 回答 3

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 开始支持)。如果您不确定要使用哪一个,请阅读这篇文章

更新:

根据我了解到的 meagar 的建议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>";
于 2012-08-20T15:23:10.107 回答
1

这根本没有任何意义:$row['mf_id'&&'Manufacturer']. 这不是您访问数组的两个元素的方式。您将两个字符串与 结合&&,产生 booleantrue并尝试访问$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_idand manufacturer,那么使用就足够了

$query = http_build_query($row);
于 2012-08-20T15:24:58.860 回答
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>";
}
于 2012-08-20T15:22:25.823 回答