PHP MySQL查询改变数据库

时间:2012-03-21 15:06:02

标签: php mysql sql dynamic

我正在开发一个基于PHP Web的数据输入工具,以MySQL作为数据库。然而,在数据输入正在进行时,数据库无疑会发生变化(有很多工作要做,所以我们已经启动它,以便它与其他开发并行运行)。

我构建了SQL查询,以便php可以自动:

  
      
  1. 确定数据库中的表格
  2.   
  3. 列出具有特定前缀的表,以便仅列出数据条目应使用的表
  4.   

然而,我无法弄清楚(尽管检查php,sql和mysql手册和教程)是如何自动拉出由外键连接的表,以便数据输入有一个项目列表可供选择表。简而言之,我如何 - 使用php - 确定:

  
      
  1. 给定表的任何外键
  2.   
  3. 外键指向的表名
  4.   

没有将任何表名硬编码到SQL查询中?

1 个答案:

答案 0 :(得分:0)

使用KEY_COLUMN_USAGE视图列出外键引用的快捷方法:

SELECT CONCAT( table_name, '.',
 column_name, ' -> ',
 referenced_table_name, '.',
 referenced_column_name ) AS list_of_fks
FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = (your schema name here)
 AND REFERENCED_TABLE_NAME is not null
ORDER BY TABLE_NAME, COLUMN_NAME;

此查询确实假定约束以及所有引用和引用表都在同一模式中。

对于InnoDB表,使用SHOW TABLE STATUS的Comment字段对于提取旧版MySQL的外键信息非常有用。

我不知道除上述两种方法之外的任何其他方式。

快乐的编码!