gpt4 book ai didi

php - 使用面向对象的 PHP 从 MySQL 中提取设置

转载 作者:行者123 更新时间:2023-11-30 01:30:52 25 4
gpt4 key购买 nike

好吧,我正在慢慢地从过程式迁移到面向对象编程,我发现除了一件事之外,一切都非常简单。

我曾经使用此方法从一个简单的两列设置表中提取设置数据,该表包含每个设置的一行,并使用“设置”和“值”字段定义:

$query = mysql_query("SELECT * FROM `settings`");
while ($current_setting = mysql_fetch_array($query)) {
$setting[$current_setting['setting']] = $current_setting['value'];
}

如您所见,我对其进行了操作,以便我可以简单地使用 $setting['any_setting_name'] 来显示该设置行中相应的“值”。我不确定这是否是一种愚蠢的做事方式,但无论如何,我都会继续前进..

但是,自从转向面向对象的 PHP 以来,我真的不知道如何做类似的事情..

$query = $mysqli->query("SELECT * FROM `settings`");
while ($current_setting = $query->fetch_object()) {
echo $current_setting->setting; // echo's each setting name
echo $current_setting->value; // echo's each setting value
}

如您所见,我完全能够检索数据,但我想要的是以后能够以以下形式使用它:$setting->setting_name;将回显 setting 等于“setting_name”的行中的 VALUE。

所以基本上,如果我的设置表中有一行,其中 setting 是“site_url”,value 是“http://example.com/” ',我想要 $setting->site_url;包含 ' http://example.com/ '..或者具有相同效果的东西..

有人可以帮我吗?我现在正处于一堵砖墙上..可能是我忽略了一些非常愚蠢的事情..

最佳答案

由于您正在使用资源,因此它有一个指针。一旦到达终点,就无法再使用它。我认为你可以重置它,但为什么不将新旧混合呢?

我认为你不会有太多的开销,无论如何,做这样的事情:

$settings = array();
$query = $mysqli->query("SELECT * FROM `settings`");
while ($current_setting = $query->fetch_object()) {
$settings[$current_setting->setting] = $current_setting->value;
}

现在您可以随心所欲地使用$settings

更新

尚未测试或使用它,但您想做这样的事情吗?考虑以下伪代码,它可能实际上不起作用。

$settings = new stdClass();
$query = $mysqli->query("SELECT * FROM `settings`");
while ($current_setting = $query->fetch_object()) {
$settings->{$current_setting->setting} = $current_setting->value;
}

关于php - 使用面向对象的 PHP 从 MySQL 中提取设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com