使用现有的PHP代码重新创建数据库

时间:2014-01-14 15:59:10

标签: php mysql database

所以我有一个旧网站,在很长一段时间内编码,但已经停用3年左右。我有完整的PHP源代码到网站,但问题是我没有数据库的备份了。我想知道重建数据库的最佳解决方案是什么?它是一个大型站点,因此手动浏览每个PHP文件并尝试跟踪哪些表被引用是一项不小的任务。我试过谷歌搜索答案,但没有运气。有没有人知道有哪些工具可以帮助从PHP中提取这些信息,至少给我一个数据库框架的基础?否则,有没有人曾经这样做过?有什么提示可以帮助我并可能加快这个过程吗?这是我正在尝试使用的mySQL数据库。

2 个答案:

答案 0 :(得分:1)

我会这样做:

编写SQLi的子集或用于访问数据库的任何接口,以拦截所有数据库访问。 用您的虚拟版本替换所有数据库访问。

基本思想是模拟数据库,以便PHP代码运行足够长的时间来激活各种数据库访问,这反过来又可以分析数据库的构建和使用方式。

从这些虚拟函数中:

  • 打印使用的SQL代码
  • 根据查询参数中检索到的PHP代码中提到的表和字段,重新生成足够的虚拟结果以让其余代码运行(您将从中学到很多东西)一个SELECT *,但你可以看到PHP代码希望从中得到哪些字段)
  • 一旦你理解了足够的数据库结构,重新创建表并让原始代码一点一点地在它们上面工作
  • 由于没有提供以编程方式重新创建数据库的方法而使之前的设计师瘫痪致死

答案 1 :(得分:0)

根据您提供的信息,目前有两个答案。

1)你不能这样做 PHP是一种无类型语言。您可以检查sql语句以查找字段和表名称。但它不会完成。如果有select * from table,则无法看到字段。所以你需要检查php访问字段。也许是通过名字或索引。如果这是通过名称完成的,您可能会感到高兴,因为您可以提取字段的名称。最后,数据类型将丢失。也缺少:哪里是索引,什么是主键,约束等。

2)容易,是的,你可以! 因为你的php使用的是包含orm的现代框架。这为您创建了数据库。 php类/设计中包含元信息。 只需查看手册如何重新创建数据库。