php - 如何在 PHP 中编辑/管理多层条件数据

标签 php mysql

我在 mysql 数据库中有 4 个表需要添加/编辑/管理。

困难在于,每一个都依赖于它之前的一个。

我在用户端进行此设置的方式是从表 1 中选择一个选项。 然后,您会看到表 2 中的选项,它们的行中有第一个选项的 ID。 在表 2 中选择选项后,您将转到表 3,表 3 会生成其列表,其中行包含您在表 2 中选择的 ID,依此类推。

问题是如何编辑/管理它。

显然,如果删除表 1 中的一个选项,则其所有后续子选项都将无效。

我只需要了解如何管理这样的设置。

最佳答案

如果没有很多细节,很难对您的确切情况发表评论,但这里有一种组织 MySQL 数据库结构的方法:

TABLE table1
  INT id
  ... other data ...

TABLE table2
  INT id
  INT table1_id FOREIGN_KEY table1
  ... other data ...

TABLE table3
  INT id
  INT table2_id FOREIGN_KEY table2
  ... other data ...

TABLE table4
  INT id
  INT table3_id FOREIGN_KEY table3
  ... other data ...

您网站的网址结构可以是:

/table1/add
/table2/add?table1_id=T1_ID
/table3/add?table2_id=T2_ID
/table4/add?table3_id=T3_ID
/table1/(edit,delete)/T1_ID
/table2/(edit,delete)/T2_ID
/table3/(edit,delete)/T3_ID
/table4/(edit,delete)/T4_ID

添加到表 2、3、4 中:

INSERT INTO table2 (data, table1_id) VALUES(data, T1_ID);

从表1中删除:

DELETE FROM table1 WHERE id = T1_ID;
$t2_ids = SELECT id FROM table2 WHERE table1_id = T1_ID;
DELETE FROM table2 WHERE table1_id = T1_ID;
$t3_ids = SELECT id FROM table3 WHERE table2_id IN ($t2_ids);
DELETE FROM table3 WHERE table2_id = $t2_ids;
$t4_ids = SELECT id FROM table4 WHERE table3_id IN ($t3_ids);
DELETE FROM table4 WHERE table3_id = $t3_ids;

如果您要从子表中删除,依此类推。

此外,如果你的每个表中的数据差异不大,你可以使用单个表来维护父/子关系

TABLE table
INT id
INT parent_id
... other data ...

您的 URL 结构不会有太大变化,但可以优化您的删除伪代码以在表本身上使用子选择。

关于php - 如何在 PHP 中编辑/管理多层条件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622986/

相关文章:

javascript - jquery移动过渡幻灯片页面内容第二次不刷新到原来

php - 如何在 ubuntu 16.04 上安装 php 5.5.9

php - 在一列上选择 DISTINCT,在 mysql 中有多个列

php - 如何在MySQL中使用两个标签参数过滤结果?

php - MySQL:用第二个查询的结果替换第一个查询的结果

php - MYSQL表结构

php - 如何为 Centos 安装 php-mysqli 包

php - 从 register.php 将数据添加到数据库时遇到问题

mysql - 通过 ruby​​ Rails 迁移添加 MySQL 枚举列时出现问题

php - 在 Laravel 5 中批量插入