我一直在寻找配置/详细信息文件的解决方案。我发现this解决方案很有趣,但我想从数据库中检索它们而不是硬编码。
我也是PDO的新手,但我现在的解决方案如下(config.php):
try {
$db = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'user', 'pwd');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->query("SELECT name, value FROM config");
$configs = $stmt->fetchAll();
return [
array_column($configs, 'value', 'name')
];
} catch(PDOException $e) {
echo "Error: ".$e->getMessage();
}
然后我收到这样的回复:
Array ( [0] => Array ( [SITENAME] => Pionérhytta [MAXGUESTS] => 5 ) )
我需要像这样编写以获取价值(index.php):
<?php $config = include('../config/config.php'); ?>
...
<?=$config[0]['SITENAME']?>
这有效,但我想删除[0]并编写$ config ['SITENAME']来获取值。
有没有解决方案?
事先,感谢您的帮助
答案 0 :(得分:4)
您的array_column()
会返回一个关联数组。没有必要将它包装在另一个数组中:
return array_column($configs, 'value', 'name');
答案 1 :(得分:1)
使用fetchAll()
进行工作的另一个解决方案,使用PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC
的组合,可以获取SQL语句的结果,第一列作为键,其余值作为价值......
$stmt = $db->query("SELECT name, value FROM config");
$configs = $stmt->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);
return $configs;