我在数据库中有一个选项表,我希望将它们从数据库中拉出来并使用define(“DEF_NAME”,“DEF_VALUE”)来定义它们,但是因为它们是从数据库中取出的他们周围没有引号。
这是我目前使用的代码:
$strOptionName = $rowDBOptions["strOptionName"];
$strOptionNameUpper = strtoupper($strOptionName);
$strOptionValue = $rowDBOptions["strOptionValue"];
$inttblOptionsType = $rowDBOptions["strOptionType"];
define($strOptionNameUpper, $strOptionValue);
唯一的问题是我收到有关未定义变量的通知。有没有人知道从数据库变量创建定义的另一个选项或方法?
答案 0 :(得分:1)
您的代码应该可以正常工作,我自己从数据库中提取配置的个人方法是这样的:
配置数据库表有一个'键'即。 GLOBAL_TAX_RATE
和一个值,即。 0.25
查询看起来像:
SELECT conf_key, conf_value FROM config_options
PHP(在数据库连接/查询执行之后)看起来像:
while ($ROW = mysql_fetch_assoc($QRY)) {
define($ROW['conf_key'],$ROW['conf_value']);
}
如果要添加新的键/值对,最终可以从数据库中定义所有常量,而不必显式添加新语句。
当然有变化,例如在繁忙的网站上,将这些值存储在会话中并循环显示 - 并且每10分钟使用一个时间戳,或者登录/注销,或者您需要的任何内容 - 刷新配置会话来自数据库的值以获取任何更改,而无需在每次有人打开页面时运行配置SELECT。
答案 1 :(得分:0)
您的代码示例应该可以正常工作。请检查通知报告的哪条线;看来你的脚本依赖于一个不在数据库中的常量。