2010-08-28 74 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结构的最绝对方式。

编辑:哎呀,没有意识到这个线程是多大年纪。