2012-07-26 145 views
0

我在与传递参数的查询到另一个页面有点问题。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

请不要使用新代码'mysql_ *'功能。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。请参阅[**红框**](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是很好的PDO教程](http://goo.gl/vFWnC)。 – 2012-07-26 20:28:47

+0

你需要了解SQL注入,尤其是当你是一个初学者:http://bobby-tables.com/ – Jakub 2012-07-26 20:28:47

+0

愚蠢的问题,但...你'var_dump'或'print_r'你'$ row'?我的意思是,在餐厅页面上。 – Palladium 2012-07-26 20:34:33

回答

4

首先,请注意:你应该通过一个ID而不是名称,因为某些字符不是在URL中大。

二,尽量在名称中使用urlencode()

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

@ user1354275你还应该记下其他人对你的代码是否开放给SQL注入和mysql_ *函数被弃用的说法。 – Matt 2012-07-26 20:34:04

+0

,工作亚光感谢 – JProg 2012-07-26 20:37:56

1

当然它不会显示任何东西,因为你在你的文件中没有任何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']);