所以我有一箇舊網站,它被編碼了很長一段時間,但已經停用了3年左右。我擁有完整的PHP源代碼,但問題是我沒有數據庫的備份。我想知道重新創建數據庫的最佳解決方案是什麼?這是一個大型站點,因此需要手動瀏覽每個PHP文件,並試圖跟蹤哪些表被引用是一項不小的任務。我試過Google的搜索結果,但沒有運氣。有誰知道任何可用的工具來幫助從PHP中提取這些信息,並且至少給我一個數據庫框架的基礎?否則,有沒有人曾經這樣做?有什麼提示可以幫助我,並有可能加快這個過程?這是我嘗試使用的mySQL數據庫。使用現有的PHP代碼重新創建數據庫
1
A
回答
1
我會做它的方式:
寫SQLI的子集或任何界面來訪問數據庫攔截所有DB訪問。 用您的虛擬版本替換所有數據庫訪問。
其基本思想是模擬數據庫,以便PHP代碼運行足夠長的時間以激活各種數據庫訪問,從而使您可以分析數據庫的構建和使用方式。
從這些虛函數中:
- 打印的SQL代碼中使用
- 產生僅僅足夠多的僞結果讓代碼運行的其餘部分,根據查詢中提到的表和字段參數和檢索它們的PHP代碼(你不會從
SELECT *
學到太多東西,但你可以看到PHP代碼期望從它得到什麼字段) - 一旦你已經瞭解了足夠的DB結構,重新創建表並讓原始代碼工作他們一點一點地
- 有以前的設計師鞭打死刑沒有提供一種方法來重新創建數據庫編程
0
根據您提供的信息,目前有兩個答案。
1)你不能這樣做 PHP是一種無類型語言。你可以檢查你的sql語句來查找字段和表名。但它不會完成。如果有select * from table
,則看不到字段。所以你需要檢查那裏的PHP訪問領域。可能是通過名稱或索引。如果這是通過名稱完成的,您可能會很高興,因爲您可以提取字段的名稱。最後數據類型將會丟失。還缺少:哪裏是索引,什麼是主鍵,約束等。
2)容易,是的,你可以! ,因爲你的php正在使用一個包含orm的現代框架。這爲你創建了數據庫。元信息包含在php類/設計中。 只需檢查手冊如何重新創建數據庫。
相關問題
- 1. 使用現有的SQL代碼創建數據庫
- 2. 使MySQL數據庫關係和更新現有的PHP代碼
- 3. Php代碼沒有更新數據庫
- 4. 爲什麼SQLiteOpenHelper重新創建我現有的數據庫?
- 5. 如何強制EF代碼首先重新創建數據庫?
- 6. 創建新數據庫或使用現有的ASP.NET身份數據庫?
- 7. 代碼先用現有的數據庫
- 8. HG-如何推動現有的源代碼,以新創建庫
- 9. 先用現有數據庫代碼
- 10. 在Eclipse中創建新的PHP項目(現有源代碼)
- 11. PHP - 創建MySQL數據庫和用戶代碼不起作用
- 12. 如何創建庫項目或重新使用代碼
- 13. 如何使用現有數據框創建新的數據框?
- 14. PHP創建數組(代碼重構)
- 15. EF代碼優先 - 重新創建唯一的表格,而不是重新創建數據庫
- 16. PHP創建新的數組從現有
- 17. 創建新的數據庫phalcon php
- 18. 使用數據代碼優先和現有數據庫
- 19. 重複使用或重新創建數據庫插入腳本
- 20. 如何使用現有數據在android中創建數據庫?
- 21. 從刪除/重新創建數據庫在使用建--all
- 22. 創建現有數據庫的「骨架」
- 23. PHP代碼不會更新數據庫
- 24. 如何從頭開始刪除並重新創建一個現有的EF代碼優先數據庫
- 25. Azure在代碼中創建數據庫
- 26. 代碼第一次創建數據庫
- 27. 代碼優先 - 不創建數據庫
- 28. Java:用於簡單源代碼重新創建/複製的庫
- 29. 如何使用node.js中的sequelize從舊數據庫重新創建數據庫
- 30. 使用php創建異步數據庫
你可以發佈你想要添加到數據庫中的文件的例子嗎? –
他不想添加文件。他想從代碼中反向設計數據庫。但是,根據所提供的信息,我們只能猜測php如何訪問數據庫。 –
這將是一個問題。即使您可以從代碼中提取項目,您也永遠無法獲得完整的數據庫圖片,包括表級ID,關鍵約束,查找表等。 –