【问题标题】:How to return values from database in only one array如何仅在一个数组中从数据库返回值
【发布时间】:2018-03-28 16:39:40
【问题描述】:

我正在寻找配置/详细信息文件的解决方案。我发现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'] 来获取值。

有什么解决办法吗?

提前感谢您的帮助

【问题讨论】:

  • return array_column($configs, 'value', 'name'); 就够了吗?

标签: php arrays return-value


【解决方案1】:

您的array_column() 返回一个关联数组。不必将其包装在另一个数组中:

return array_column($configs, 'value', 'name');

【讨论】:

    【解决方案2】:

    只是另一种解决方案,使用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;
    

    【讨论】:

      猜你喜欢
      • 2015-12-05
      • 2019-11-14
      • 2023-03-17
      • 2019-12-04
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      相关资源
      最近更新 更多