gpt4 book ai didi

php - 存储全局站点首选项 [PHP/MySQL]

转载 作者:可可西里 更新时间:2023-11-01 07:12:14 25 4
gpt4 key购买 nike

谁能推荐存储一般网站首选项的最佳做法?例如,如果脚本没有设置默认页面标题,或者要在内容框中显示的特色项目的数量,或者上传图片时系统应该制作的缩略图大小列表。集中这些值的明显好处是允许人们轻松更改可能在许多页面上使用的首选项。

我的默认方法是将这些首选项作为属性/值对放在 *gulp* EAV 表中。

这张表不太可能变得很大,所以我不太担心性能。我的架构的其余部分是相关的。不过,它确实会产生一些该死的丑陋查询:

$sql = "SELECT name, value FROM preferences"
. " WHERE name = 'picture_sizes'"
. " OR name = 'num_picture_fields'"
. " OR name = 'server_path_to_http'"
. " OR name = 'picture_directory'";
$query = mysql_query($sql);
if(!$query) {
echo "Oops! ".mysql_error();
}
while($results = mysql_fetch_assoc($query)) {
$pref[$results['name']] = $results['value'];
}

谁能提出更好的方法?

最佳答案

在我的应用程序中,我使用了这个结构:

CREATE TABLE `general_settings` (
`setting_key` varchar(255) NOT NULL,
`setting_group` varchar(255) NOT NULL DEFAULT 'general',
`setting_label` varchar(255) DEFAULT NULL,
`setting_type` enum('text','integer','float','textarea','select','radio','checkbox') NOT NULL DEFAULT 'text',
`setting_value` text NOT NULL,
`setting_options` varchar(255) DEFAULT NULL,
`setting_weight` int(11) DEFAULT '0',
PRIMARY KEY (`setting_key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

示例数据:

mysql> select * from general_settings;
+-----------------------------+---------------+------------------------------+--------------+-------------------------------+---------------------------------------+----------------+
| setting_key | setting_group | setting_label | setting_type | setting_value | setting_options | setting_weight |
+-----------------------------+---------------+------------------------------+--------------+-------------------------------+---------------------------------------+----------------+
| website_name | website | Website Name | text | s:6:"DeenTV"; | NULL | 1 |

我在 setting_value 列中存储了一个序列化值。我从 wordpress 的方法中得到了这个技巧,可以将设置保存在数据库中。

setting_options 列用于selectradiocheckbox setting_type。它将包含一个序列化数组值。在管理员中,此值将显示为选项,因此管理员可以选择其中一个。

因为我使用 CodeIgniter,所以我有一个模型可以从特定的 setting_key 获取单个值,所以它非常容易使用。

关于php - 存储全局站点首选项 [PHP/MySQL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245056/

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