【问题标题】:show array from database显示数据库中的数组
【发布时间】:2019-03-22 15:53:02
【问题描述】:

我有这个数据库

id | domain    | whois_server         |
---------------------------------------
1  | ac        | whois.nic.ac         |
2  | ae        | whois.nic.ae         |
3  | id        | whois.pandi.or.id    |

如何显示没有id的数组形式?

array (
    'ac' => 'whois.nic.ac',
    'ae' => 'whois.nic.ae',
    'id' => 'whois.pandi.or.id',
)

我已经完成了以下代码:

$sql = "SELECT * FROM whois_server ";
$result = $db->prepare($sql);
$result->execute();
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    $whoisservers =  array_merge($whoisservers, array_map('trim', explode(",", $row[1])));
}

但出现的是:

array (
    [0] => whois.nic.ac
    [1] => whois.nic.ae
    [2] => whois.pandi.or.id
)

【问题讨论】:

  • 为什么你不使用这个查询SELECT domain, whois_server FROM whois_server

标签: php mysql sql arrays pdo


【解决方案1】:
$sql = "SELECT * FROM whois_server ";
$result = $db->prepare($sql);
$result->execute();
$dataReturn = [];
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
      $dataReturn[$row['domain']] = $row['whois_server'];
}
print_r($dataReturn);

【讨论】:

    【解决方案2】:

    在您的循环中,您可以为每个值添加$whoisseervers 变量的键:

    $sql = "SELECT domain, whois_server FROM whois_server";
    $result = $db->prepare($sql);
    $result->execute();
    
    $whoisservers = [];
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        $whoisservers[$row['domain']] =  $row['whois_server'];
    }
    
    print_r($whoisservers);
    

    【讨论】:

      【解决方案3】:
      $whoisservers = array();
      while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        $whoisservers[$row["domain"]] = $row["whois_server"];
      }
      

      会更简单(更清晰)。

      如 cmets 中所述,在 SQL 中不要选择您不需要的字段。

      【讨论】:

        【解决方案4】:

        通过将索引作为$row['domain'] 并将值作为$row['whois_server'] 推送,添加到$whoisservers 数组。

        $whoisservers = [];
        $sql = "SELECT * FROM whois_server ";
        $result = $db->prepare($sql);
        $result->execute();
        while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
            $whoisservers[$row['domain']] =  $row['whois_server'];
        }
        print_r($whoisservers);
        

        【讨论】:

          【解决方案5】:

          fetchAllPDO::FETCH_KEY_PAIR 的其他答案解决方案略有不同:

          $sql = "SELECT domain, whois_server FROM whois_server";
          $result = $db->prepare($sql);
          $result->execute();
          $whoisservers = $result->fetchAll(PDO::FETCH_KEY_PAIR);
          print_r($whoisservers);
          

          【讨论】:

            猜你喜欢
            • 2021-09-19
            • 2013-09-17
            • 2012-03-03
            • 2018-08-14
            • 2021-06-23
            • 1970-01-01
            • 2022-01-10
            • 2016-09-08
            • 1970-01-01
            相关资源
            最近更新 更多