2010-08-28 122 views
0

好吧,我試圖從數據庫中獲取數據,根據網址拉。PHP解析URL

我有一個數據庫,它爲一些單獨的客戶網站公佈了一些數據。這些網站位於我網站的個人目錄中。 (即,www.domain.com/website1/index.html,www.domain.com/website2/index.html,www.domain.com/website3/index.html等)。在數據庫中我有一列每個客戶都有「文件名」(又名目錄名 - 網站1,網站2,網站3等)。我想嘗試僅顯示數據庫中的行,其中filingName = website1爲域「www.domain.com/website1/index.html」。希望這是有道理的。我基本上試圖找出如何連接單個頁面之間的點和只拉特定的客戶記錄。有什麼想法嗎??

謝謝!

+0

什麼數據庫?問題被標記爲數據庫 – 2010-08-28 13:42:26

回答

1

根據您的數據集有多大,它可能是「便宜」來預處理URL和存儲需要匹配的各個組件。例如爲主機/目錄/查詢字符串創建額外的字段並單獨存儲這些字段,而不是單片絕對URL。這比嘗試執行子字符串匹配更安全,特別是如果您匹配的子字符串可能是多個不同URL的一部分('abc'是'abc.com'和'abctv.com'的一部分)。

0

在查詢中使用LIKE語句:

SELECT * FROM `sites` WHERE `url` LIKE "%/website1/%"; 
+0

或者,您可以使用REGEXP,但我相信這將是一個更昂貴的查詢這樣的事情。 – 2010-08-28 03:17:54

+0

這樣的查詢需要全表掃描幾乎總是這樣...這不適合在中到大型項目中使用。 – 2010-08-29 19:08:18

0

最好的辦法是將這些標識符自行存儲在數據庫中(例如1 = website1,2 = website2)並相應地命名目錄。然後在你的.htaccess文件中,操縱URL看起來像你的$_GET變量是目錄名,用你的數據庫中的匹配名替換它。用RewriteRule規則做到這一點。這是保持相同URL結構的最絕對方式。

編輯:哎呀,沒有意識到這個線程是多大年紀。