MySQL / PHP - 在数据库表中存储参数:好主意还是坏主意?

时间:2014-10-29 15:06:13

标签: php mysql

到目前为止,我将我网站所需的所有相关参数存储为php文件中的变量;然后我通过每个需要这些参数的页面中的require语句指向此文件。 这大部分时间都很好并且很容易保持,但有时我需要“动态”更改这些变量,我觉得需要某种类型的网络面板,我可以更容易地更改它们(我正在考虑带有表单以更新参数的网页)。 所以我在我的MySQL数据库中创建了一个表来存储参数(基本上,这个表有两列:ParamNameParamValue;我已经将参数名称存储为varchar 而没有开头的$ sign ),以便创建我脑海中的网络面板。

我正在考虑使用此查询提取所有参数名称和值:

$query=$mysqli->query('select * from parameters');
while($row=mysqli_fetch_assoc($query)) {
$ParamName=$row["ParamName"];
$$ParamName=$row["ParamValue"]; }
  • 这是好主意还是坏主意?
  • 我可以遇到的主要问题是什么(在安全性方面)?
  • 使用$$ParamName
  • 的可折旧和危险程度如何?
  • 我最好改变主意,还是可以这样做?

编辑:我按照建议将mysql_语法更改为mysqli_

2 个答案:

答案 0 :(得分:1)

在数据库中使用任意值作为变量引用高度有风险。你想要做的是将你的键/值存储中的数据提取到一个自包含的关联数组中,然后使用它。

这些天你也不想使用mysql_query。请把那件事拿走。

答案 1 :(得分:0)

如果参数都是不会随时间变化的常量,则使用单个文件将它们作为常量存储在简单的关联数组中会更快。

如果这些参数发生变化,使用专门用于键值存储的数据库可能对您更有用,而不是使用标准的关系数据库。

如果您无法从关系数据库更改数据库,或者您没有经常更改这些值,则使用memcached等方法缓存它们会更快。