3
我有一個<table>
根據通過$_GET
變量獲得的用戶選擇獲取數據更新。以下兩個選項中的哪一個可以更好地將數據加載到<table>
?在動態更新的頁面上包含HTML的更好方法:php include()或MySQL數據庫?
1)PHP include()
會是這樣的......
<?php
$problem_id = (int)$_GET['problem_id'];
$table .= '<table>';
include('path/to/file/' . $problem_id . '.php'); //$problem_id.php would contain the <tr>'s and <td>'s that go in the <table>.
$table.= '</table>';
echo $table;
?>
2)使用MySQL數據庫會是這樣的......
<?php
$problem_id = (int)$_GET['problem_id'];
/*
Go to DB and get the entry which contains <tr>'s and <td>'s that
go in the <table> and put it into the variable $table_content.
*/
$table = '<table>' . $table_content . '</table>';
echo $table;
?>
是否有一個明顯的選擇在這裏?兩種方法的優缺點?
謝謝。
取決於,你沒有理由不能同時使用兩者。您的數據是位於文件還是數據庫中?我的假設是某種數據庫。代替存儲表結構(_
@hoss:實際上,「數據」是
$ problem_id是否固定在數字中?或者它是否會改變?如果它修復了多少?是否還有基於$ problem_id的更新刪除方案? –
回答
我要說的是,主要取決於文本有多大,和你有多少將會有。
如果你想有大的,複雜的頁面幾十(或幾百個,甚至上千個),有很多的內容 - 也許
include()
是要走的路。您也可以直接在文件系統上編輯它們。如果你將有數以千計的(或更多)更簡單的頁面,那麼使用數據庫可能會更有效。如果你想索引和搜索它們,這也是一個好主意。
一個相當任意的閾值,每個文件會佔用最小爲4 KB,因此,如果他們有較少的內容比你可能跟他們浪費空間。
在這兩種情況下,您都會希望爲濫用內容的人提供濫用保護。
problem_id=../../../passwords.php
的查詢,以及爲有你的文件系統被吃掉,如果人們能產生問題本身。最後,有文件系統,在那裏,被實現爲數據庫,和數據庫被實現爲文件系統。他們並非完全不同;他們只針對不同的事情進行了優化。
來源
2016-01-11 21:44:37 zebediah49
我肯定會得到數千個可能在2-10kb範圍內的「條目」。至於保護,我將是唯一一個創建文件,所以這裏沒有問題。在這種情況下,這聽起來像數據庫路線唯一可觀的優勢是搜索。這聽起來是對的嗎? – gtilflm
根據我的經驗,文件包含會更快,但您必須測試您的系統才能確定。這是同一主題的深入討論:
What's quicker; including another file or querying a MySQL database in PHP?
來源
2016-01-09 19:55:20
感謝您的鏈接理查德。我更關注整體的最佳實踐,而不僅僅是最快的。有沒有其他想法? – gtilflm
你必須做出決定取決於每個選項
good
和bad
雙方DB選項
好的一面 - 如果你正在使用的版本控制(EG
git
),你必須給能力administrators
修改html
模板admin panel
那麼最好的選擇是你DB因爲在的情況下文件存儲文件,如果通過admin panel
修改於服務器和git
在同一時間,那麼你將有服務器更新期間好壞兩面衝突 -
1)
你必須做更多的操作把它從數據庫和然後顯示文件的情況。2)
當你的模板存儲在數據庫就會對數據庫的額外負載,以後如果有性能優化問題,你將實現文件高速緩存文件選項
好的一面 -
1)
它開發人員可以輕鬆修改其IDE editors (E.G. eclipse)
上的html模板,然後在數據庫或管理面板中對其進行修改。2)
文件包含匹配速度更快,需要較少的代碼操作,然後DB(通常如果您沒有特定的情況)。3)
你沒有必要實現文件高速緩存,因爲它已經存儲在文件中好壞兩面 - 1)正如我上面提到你將有
git
問題,如果你在同一時間來源
2016-01-12 07:13:27 Armen
admin
和git
MySQL是我明顯的選擇。動態地包含一堆PHP文檔會混亂你的服務器。問題是你真的想要輸入或生成新的表格數據嗎?您可以將它全部動態創建,然後插入到數據庫中。
來源
2016-01-17 05:13:04 brocksprogramming
如果是動態內容,您的最佳選擇是HTML5 + jQuery-Ajax + PHP + Db的組合。
在你的HTML頁面,您可以有這樣的代碼:
你用「jQuery的Ajax」的異步請求服務器數據和填充空表(#results在這個例子中)。此應用程序是連接到數據庫(可以是任何數據庫引擎或MySQL數據庫)的文件「PHP」。
來源
2016-01-17 21:21:21
相關問題