2014-10-29 63 views
-1

到目前爲止,我將我需要的所有相關參數存儲爲一個php文件中的變量;然後通過每個頁面中需要這些參數的require語句指向該文件。 這是大多數時候都很好,很容易維護,但有時我需要更改這些變量,並且我覺得需要某種網頁面板,我可以更容易地更改這些變量(我在想到帶有表單的網頁來更新參數)。 所以我在我的MySQL數據庫中創建了一個表來存儲參數(基本上,這個表有兩列:ParamNameParamValue;我已經將參數名稱存儲爲varchar ,在開頭處沒有$符號),in爲了創建我腦海中的網頁面板。MySQL/PHP - 將參數存儲在數據庫表中:好的或壞的想法?

我想使用此查詢,提取所有參數名稱和值:

$query=$mysqli->query('select * from parameters'); 
while($row=mysqli_fetch_assoc($query)) { 
$ParamName=$row["ParamName"]; 
$$ParamName=$row["ParamValue"]; } 
  • 這是一個好的或壞的主意嗎?
  • 我可能遇到的主要問題是什麼(就安全性而言)?
  • 使用$$ParamName如何折舊和危險?
  • 我最好改變主意,或者我可以這樣做?

編輯:我改變mysql_語法爲mysqli_建議。

+4

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – esqew 2014-10-29 15:07:07

+0

不好主意。從不污染你的可變空間。如果你在24小時編碼狂歡後創建一個名爲'_POST'的ParamName?甚至更糟,'_SERVER'?現在你有一個很大的問題。 – 2014-10-29 15:11:52

+0

這是窮人的應用程序設計,以塞滿命名變量填充的全局變量空間。更好的方法是創建一個名爲「config」的變量或對象並使用它。我建議你把它分成兩組「config」和「settings」,只加載數據庫中的設置。「config」會處理你的數據庫連接信息,服務器名稱或任何需要保持安全的東西。 – DampeS8N 2014-10-29 15:14:22

回答

1

在數據庫中使用任意值作爲變量引用是高度有風險。你想要做的是從你的鍵/值存儲中獲取數據到一個自包含的關聯數組中,並用它來代替。

這些天你也不想使用mysql_query。請把那東西丟掉。

0

如果參數都是不會隨時間而改變的常量,那麼使用單個文件將其作爲常量存儲在簡單的關聯數組中會更快。

如果這些參數會發生變化,那麼使用專門針對鍵值存儲的數據庫可能對您更有用,而不是使用標準關係數據庫。

如果您不能從關係數據庫更改數據庫,或者您不經常更改這些值,那麼使用類似memcached的緩存會更快。

相關問題