查询变量uri

时间:2013-06-18 13:42:14

标签: php mysql

我和我们的团队有一个关于从数据库中选择数据的有趣案例。我们想知道你们是否有很多不同的方法来解决这个问题。

案例如下:

我们有一个预订系统可以在页面上预订“小部件”。管理员用户可以通过在后端添加uri来预订窗口小部件,例如:/profile/login

我们目前使用的查询如下所示:

SELECT widget_type FROM cms_pages WHERE page_uri = '/profile/login';

这一切都非常好。如果查询中有结果,那么就会有一个小部件,如果没有结果(count = 0),则管理员用户没有将小部件预订到该特定页面。

现在我们有一个类似/profile/login/AEJIJDOJO=的页面。如果在该uri上预订了一个小部件,那么上面的查询就完成了这项工作。如果没有预订小部件,那么我们需要获取在/profile/login上预订的小部件等等...

我们目前有一个猴子php解决方案,所以我们想知道是否可以通过仅使用mysql来解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以使用LIKE:

SELECT widget_type FROM cms_pages 
WHERE page_uri = '/profile/login' OR page_uri LIKE '/profile/login/%'

答案 1 :(得分:0)

当这只是一个经典的many_many关系时,我会避免尝试在MySQL中找到解析URL的解决方法。您需要widget表,cms_pagecms_page_has_widget表。

然后获取页面的所有小部件,例如:

SELECT t3.* FROM cms_page t1, cms_page_has_widget t2, widget t3 
WHERE t1.id = t2.page_id
AND t3.id = t2.widget_id
AND t1.id = <page_id>

或使用网址

SELECT t3.* FROM cms_page t1, cms_page_has_widget t2, widget t3 
WHERE t1.id = t2.page_id
AND t3.id = t2.widget_id
AND t1.url = <page_url>