PHP通过href传递变量

时间:2012-07-26 20:27:15

标签: php href

我将查询参数传递给另一个页面时遇到了一些问题。

我想让餐馆的名称成为一个链接,该链接将传递产品名称以在下一页上处理查询。

echo "<p class='p2'><a class='link' href='restaurant.php?name=". $row['name'] ."'><strong>". $row['name'] ."</strong></a>

在餐厅页面上

<?php
require ("db.php");
$name = $_GET['name'];

$query = "SELECT * FROM restaurant WHERE name =\"$name\"";
$result = mysql_query($query);
$row = mysql_fetch_array($result);   
?>

但没有显示任何内容。

知道我做错了吗?

2 个答案:

答案 0 :(得分:4)

首先,请注意:您应该传递ID而不是名称,因为某些字符在网址中不是很好。

其次,尝试在名称上使用urlencode()

echo "<p class='p2'><a class='link' href='restaurant.php?name=". urlencode($row['name']) ."'><strong>". $row['name'] ."</strong></a>

答案 1 :(得分:1)

当然它不会显示任何内容,因为你的文件中没有任何print函数(echo,print,var_dump,...)。


无论如何,您可能认为您的查询不起作用。如果是,请尝试echo您的$row['name']。如果一切正常,请检查您的变量是否已设置,但可能不是因为您获得null

要解决该问题,请使用isset()empty()

示例:

if(!empty($_GET['name'])) $name = $_GET['name'];
else die('Variable name is empty');

还要尝试将ini_set('display_errors', true)添加到页面顶部以查看是否存在任何错误。

 

请注意,您的代码非常不安全且容易受到攻击。在执行查询之前使用mysql_real_escape_string()

示例:

$name = mysql_real_escape_string($_GET['name']);