在REQUEST_URI中检查数据库记录中的目录

时间:2016-04-14 21:07:55

标签: php mysql

我希望在REQUEST_URI中使用数据库中的条目验证directorys。我目前有一个类似于以下

的网址结构

https://domain.com/accounts/customers/details

我的数据库看起来像这样

IDNO - 网址 - 父母

1 - accounts - 0

2 - 客户 - 1

3 - 详情 - 2

!!我不知道如何为我的问题创建一个表格

有哪些可行的方法来检查网址的这些单独部分是否存在但是彼此的父母或子女

所以为了澄清我想检查数据库中是否存在“账户”,如果存在,我们会看到数据库中是否存在“客户”,但其父级是1,与上表中的账户ID相同

如果这不存在,我将返回404

1 个答案:

答案 0 :(得分:0)

如果我是你,我可能会设置一个转换表,为每个其他表存储外键。这是一个例子,比如你有这三个表:

账户:

Account ID  |     Name    |  Other Info
     1      |  Account 1  |   Whatever
     2      |  Account 2  |     Meh
     3      |  Account 3  |     Woo!

客户:

Customer ID |     Name    |  Birthday
     1      |     Matt    |   Jan 1
     2      |    Nathan   |   Jan 2

详细说明:

Details ID  |     Name    |  Other Stuff
     1      |  Details 1  |   DETAILS
     2      |  Details 2  |    MORE

这三个表格包含三个模型的数据。基本上,您添加第四个表将它们链接在一起:

翻译表:

Account  |  Customer  |  Details
   1     |     1      |     1
   1     |     2      |     1
   2     |     2      |     2
   3     |     1      |     2

您指向此表中其他表的UID。这允许您做的是逻辑上将三个组关联在一起。上表基本上是这样说的:

  • 帐户1包含Matt,他的详细信息是DETAILS
  • 帐户1包含Nathan,他的详细信息是DETAILS
  • 帐户2包含Nathan,他的详细信息更多
  • 帐户3包含Matt,他的详细信息为MORE

这使您可以执行诸如针对转换表获取所有查询以及在需要时加入数据等操作。如果您的PHP只是在数据库中再次检查您的参数:

https://domain.com/1/2/2

使用该路由,您将获得如下的SQL查询:

SELECT * FROM translation_table
    WHERE `Account` = 1
    AND `Customer` = 2
    AND `Details` = 2

如果它返回一行,那么你就是黄金,你可以只在你需要的地方加入数据并渲染页面。如果它不存在,则返回404标题。