我的表设置如下:
id | config_name | CONFIG_VALUE
1 |语言|英语
2 |货币| $
3 | date_format | M d,Y
等...
我正在尝试查询数据库,以便在整个页面中根据需要使用此信息。此表中可能有100行,但我只需要在页面上使用特定的行。这就是我需要指定我正在使用哪一个的原因。例如:
$ config->语言; 会回显“英语”
$ config->货币; 会回显“$”等等。
我该如何设置?
我知道如何获取值并在while循环中反复回显相同的事情:
$systemconfig = mysql_query("SELECT config_name, config_value FROM system_config");
while($configs = mysql_fetch_array( $systemconfig )) {
echo "The value of ".$configs['config_name']."is: ".$configs['config_value'];
} // end while
...但我不想陷入那个循环,因为它循环遍历数据库中的所有配置。这就是为什么我希望能够回显我在整个页面中指定的特定配置值,如上所述,即: $ config-> language
有人可以启发我吗?
答案 0 :(得分:1)
您要么获取所有内容,要么您必须事先知道您将在页面中使用哪些配置值并仅获取这些值。
否则,您将不得不制作一个自动加载对象,该对象将在访问该选项时获取/缓存每个配置值。
答案 1 :(得分:1)
这是非常直接的,你必须自己完成思考过程:
这是一个粗略的对象示例(您填写所需的代码):
<?php
class config
{
protected $self = array();
function __construct() // a constructor runs on initialization of object
{
$q = mysql_query("SELECT config_name, config_value FROM system_config");
while($configs = mysql_fetch_array( $q )) {
$this->add($configs['config_name'], $configs['config_value']);
}
}
function add($key, $value){
$this->self[$key] = $value;
}
function __get( $name = null ) { // this is a getter that you call
if(isset($this->self[$name])){
return $this->self[$name];
}
return false; // this is returned if element doesn't exist
}
}
$config = new config;
echo $config->language;
?>
答案 2 :(得分:0)
更好的方式
function getConfig($what)
{
$qry = "SELECT `config_name` AS `name` , `config_value` AS `value`
FROM `system_config` WHERE `config_name`=$what";
$reslt = mysql_query($qry);
return mysql_fetch_object($result);
}
$config = getConfig('language');
while($row=$config)
{
echo $config->name;
echo $config->value;
}
答案 3 :(得分:0)
您必须将$ config构建为key =&gt; value数组,其中键是配置名称,值是配置值。
然后,如果您坚持使用对象表示法,则可以在类构造函数中使用extract()
,以使用键作为变量名称将$ config数组的值“转储”为类属性。