2012-07-26 174 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']);