2011-05-31 53 views
2

請有人可以幫助我構建我的第一個從MySQL表中獲取信息的網站,迄今爲止我成功地設法連接到數據庫並獲取我需要的信息。PHP網站的URL請幫助!

我的網站設置爲顯示錶中的單個記錄,但是我需要某種方式來更改每條記錄的URL,因此我可以將頁面鏈接到特定的記錄。我曾在Facebook等網站上看到每個人的個人資料都以一個獨特的編號結尾。例如http://www.facebook.com/profile.php?id=793636552

我喜歡將我的ID基於我桌子上的主鍵,例如LOCATION_ID

香港專業教育學院包括我的PHP代碼,到目前爲止,

<?php 
require "connect.php"; 
$query = "select * from location limit 1"; 
$result = @mysql_query($query, $connection) 
or die ("Unable to perform query<br>$query"); 
?> 

<?php 
while($row= mysql_fetch_array($result)) 
{ 
?> 

<?php echo $row['image'] ?> 

<?php 
} 
?> 

感謝

+0

嗨,大家好,感謝您的意見,對不起,我只是PHP昨天開始,我的知識是非常非常基本的,是任何一個能夠重寫上面的代碼,以包括將記錄Id號碼分配給該網址的聲明,ive有一個嘗試,但即時獲取錯誤標誌,現在我有點失去感謝。 – Craig 2011-05-31 20:45:18

回答

3

使用$ _GET檢索來自腳本的查詢的東西(又名命令行的方式):

<?php 

$id = (intval)$_GET['id']; // force this query parameter to be treated as an integer 

$query = "SELECT * FROM location WHERE id={$id};"; 
$result = mysql_query($query) or die(mysql_error()); 

if (mysql_num_rows($result) == 0) { 
    echo 'nothing found'; 
} else { 
    $row = mysql_fetch_assoc($result); 
    echo $row['image']; 
} 
+1

Craig,這樣可以正常工作,而且由於Marc使用'(intval)',所以它很安全。然而,就其他任何事情而言,你應該逃避你的數據。記住這一點,所以你不會遇到嚴重的SQL注入漏洞。 – Brad 2011-05-31 20:21:10

0

一旦你選擇了從數據庫中的記錄,你可以將用戶重定向到使用header()功能不同的URL。例如:

header('Location: http://yoursite.com/page.php?id=123 ');

0

您將需要創建一個鏈接到同一個(或一個新的頁面)與你的願望的URL,然後邏輯來檢查參數拉開一定的形象......

如果你列出所有的人,你可以:

echo "<a href=samepage.php?id=" . $row['location_id'] . ">" . $row['name'] . "</a>" 

這將使鏈接..現在當他們點擊它,在samepage.php你想尋找它:

if (isset($_GET['id']) && is_numeric($_GET['id'])) { 
    //query the db and pull that image.. 
} 
1

有很多事情要考慮,如果這是您第一次涉足MSSQL發展。

SQL注入

有人可能會通過使用您的ID從您的網址插入/刪除等事(小心!清理你的輸入)

泄漏數據

有人可能請求ID = 1234924,你期望ID = 12134(所以一些敏感數據可以顯示,等等)。

使用光框架

如果你以前沒有看,我建議像一個框架(CodeIgniter,或CakePHP的),MySQL調用,連接,驗證都是樣板代碼(總是要做他們)。最好節省時間,並開始製作應用程序,而不是重新發明輪子。

0

變量可以拉出的URL中很容易:

www.site.com/index.php?id=12345

,我們可以用$ _GET ID後訪問次數[ '身份證']

echo $_GET['id']; 

輸出:

12345 

所以,如果你有一個記錄列表(或圖像,你的情況),你可以霖k到他們更容易:

$query = mysql_query(...); 
$numrows = mysql_num_rows($query); 
for ($num=0;$num<=$numrows;$num++) { 
    $array = mysql_fetch_array($query); 
    echo "<a href=\"./index.php?id=". $row['id'] ."\" />Image #". $row['id'] ."</a>"; 
} 

,將顯示所有的記錄,像這樣:

Image #1 (links to: http://www.site.com/index.php?id=1) 
Image #2 (links to: http://www.site.com/index.php?id=2) 
Image #3 (links to: http://www.site.com/index.php?id=3) 
...