2011-02-11 72 views
2

我試圖使用PHP和MySQL把我的第一個動態的網站上顯示來自MySQL數據庫的內容 - NUBE中心!幫助與ID

我在構建數據庫和插入數據還算不錯的槍。現在我想在php/html模板中顯示每行的內容。

我創建了一個PHP文件,列出了每一行有一個鏈接到一個story.php文件:

<a href="story.php?id=<? echo $row->id; 
?>"><? 

echo $row->Name; ?></a> 

但是,當我想建立story.php文件我用的時候得到一個錯誤:

$query = "SELECT Name, Address FROM garden WHERE id ='$id'"; 

$result = mysql_query($query) or die ("Error in query: $query. " . 

mysql_error()); 

如果我硬編碼WHERE ID =「1」」例如,它會顯示該行罰款,但用‘的$ id’沒有返回。

我怎樣才能得到它返回的數據根據鏈接中的id即行:

http://localhost:8888/test/tiebel/story.php?id=1 
+0

讓「destringify」你的id值。如果id的數據類型是數據庫中的整數,則不需要圍繞該變量的單引號。 – 2011-02-11 00:41:41

+0

感謝百萬@cyberkiwi - 我做到了這一點,我得到「錯誤在查詢:選擇名稱,地址從Tiebel_Gardens_Homes WHERE id =。你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的手冊語法使用附近''在第1行:(:) – JamesL 2011-02-11 00:48:43

回答

0

我猜ID是數字,所以下降的報價

$query = "SELECT Name, Address FROM garden WHERE id =$id"; 


「查詢錯誤:SELECT名稱從Tiebel_Gardens_Homes地址在ID =。

對於這一個,你需要

  1. 從GET/POST參數得到ID
  2. 妥善處理未設置標識

所以我會做到這一點

$id = $_GET['id']; 
if (!is_numeric($id)) { $id = 0; } 
$query = "SELECT Name, Address FROM garden WHERE id =$id"; 
+0

感謝cyberkiwi - 我將它更改爲 – JamesL 2011-02-11 00:45:19

0

您可能試圖採取advant年齡'register_globals',不是一個好的舉措。另外,如果這樣做,我可以使用「http:// localhost:8888/test/tiebel/story.php?id = 1; drop table garden」來清除數據庫。

值「身份證」是可用的,如$ _GET [「身份證」],但我會進一步做這樣的事情:

$id = isset($_GET['id']) ? int($_GET['id']) : 0; 
if ($id == 0) { 
    echo "problem with id"; 
    exit; 
} 

這可確保變量是 一)實際上是在設置第一名和 b)是一個數字。

如果任何不是一個號碼(或至少,不以數字開頭)被附加到URL,它將被轉換成整數,失敗和顯示爲0,這被檢查。

由於對方回答說,如果它是一個簡單的數字,你不需要周圍的引號,但也需要一些保障,否則可能是「....?ID = ID」,這結束了作爲SELECT Name, Address FROM garden WHERE id=id(選擇所有行)。

0

如果我理解正確的話你問:

當ID = ##在你的網址,你設置一個$ _GET值。嘗試:

$id = $_GET['id']; 

查詢之前。