我正在开发基于 PHP 和 mySQL 的网站。我正在尝试在管理面板中设置“设置”页面,我可以在其中输入不同的设置来管理站点。根据要求,设置的范围可达 100(甚至更多)。因此,我不想制作 100 列(如果将来必须添加更多列,则增加),我想以行格式存储数据并获取值,就好像我从列中获取它一样。
参考:
我在最流行的博客工具“Wordpress”中发现了类似的现实生活实现。作为参考,我说的是“wp_options”表。(请纠正我错了)
例子:
这是我试图这样做的一个简单示例(以及为什么):
--Table settings
P.KEY option_name option_value
1 site_name XYZ site inc.
2 siteurl http://www.xyz.com
3 slogan Welcome to my XYZ site
4 admin_email admin@xyz.com
5 mailserver_url mail.xyz.com
6 mailserver_port 23
..... etc.
正如您从上面看到的,我列出的选项很少,而且它们的数量正在增加。(仅作记录,我安装的 Wordpress 在 wp_options 表中有 902 行,我没有看到任何重复的 option_name)。所以我有一种感觉,如果我应用与 Wordpress 相同的工作原理来适应设置的增长,我就会过得很好。我也想这样做,一旦我将所有设置保存在数据库中,我想检索所有设置并填充表单中的相应字段,其中条目存在于数据库中。
我的代码试验之一:
--
-- Table structure for table `settings`
--
CREATE TABLE IF NOT EXISTS `settings` (
`set_id` tinyint(3) NOT NULL auto_increment,
`option_name` varchar(255) NOT NULL,
`option_value` varchar(255) NOT NULL,
PRIMARY KEY (`set_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `settings`
--
INSERT INTO `settings` (`set_id`, `option_name`, `option_value`) VALUES
(1, 'site_name', 'XYZ site inc.'),
(2, 'slogan', 'Welcome to my XYZ site');
$result = mysql_query("SELECT option_name, option_value FROM settings");
$defaults = array('option_name', 'option_value');
while( list($n, $v) = mysql_fetch_array($result) )
{
$defaults['option_name'] .= $n;
$defaults['option_value'] .= $v;
}
echo $defaults['option_name'].'---'.$defaults['option_value'].'<br />';
//The above code gives me the following Output:
//site_nameslogan---XYZ site inc.Welcome to my XYZ site
当我运行上述查询时,我还会收到 2 个 PHP 通知,上面写着:
未定义索引:option_name
未定义索引:option_value
我将不胜感激任何可以向我展示PHP 代码以成功检索选项并消除未定义索引问题的回复。另外,就像我之前提到的,我想在存储数据后,在接下来访问设置页面时检索所有现有设置并填充表单中的相应字段。
提前向所有人致谢。