0

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

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

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);   
?>

但什么也没有显示。

知道我做错了什么吗?

4

2 回答 2

4

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

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

echo "<p class='p2'><a class='link' href='restaurant.php?name=". urlencode($row['name']) ."'><strong>". $row['name'] ."</strong></a>
于 2012-07-26T20:29:30.290 回答
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']);
于 2012-07-26T20:31:31.610 回答