【问题标题】:How to create multidimensional array with name of columns in PDO如何在 PDO 中创建具有列名的多维数组
【发布时间】:2016-02-29 07:28:39
【问题描述】:

我有这个查询,我想创建多维数组。我试过这个:

$columns = array("col1", "col2", "col3", "col4");
$query = "SELECT " . implode(",", $columns) . " FROM my_table";
$sql = $db->prepare($query);
$sql->execute();

$data = array();
while ($row = $stm->fetch()) {
    $nestedData = array();

    for ($i = 0, $m = count($columns); $i < $m; $i++) {
        $value = $row[$columns[$i]];
        $nestedData[] = empty($value) === false ? $value : "";
    }

    $data[] = $nestedData;
}

我得到这样的东西:

[["value11","value12","value13","value14"],
["value21","value22","value23","value24"], etc]

我也想要列名(像这样):

[["col1":"value11","col2":"value12","col3":"value13","col4":"value14"],
["col1":"value21","col2":"value22","col3":"value23","col4":"value24"], etc]

谁能帮我实现这个目标?

【问题讨论】:

标签: php mysql arrays multidimensional-array pdo


【解决方案1】:

查看“fetch_style”属性: http://php.net/manual/en/pdostatement.fetch.php

并使用 http://php.net/manual/en/pdostatement.fetchall.php

$columns = array("col1", "col2", "col3", "col4");
$query = "SELECT " . implode(",", $columns) . " FROM my_table";
$sql = $db->prepare($query);
$sql->execute();
$data = $sql->fetchAll(PDO::FETCH_ASSOC);

【讨论】:

    【解决方案2】:

    我相信您正在寻找的是 PDO 返回一个关联数组。这样做很容易实现:

    $results = $stmt->fetch(PDO::FETCH_ASSOC);
    

    或者如果您希望这是所有查询的默认设置,您可以通过这种方式创建连接:

    $conn = new PDO($connStr, $usr, $pass, [
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
    

    有关更多信息或选项,请阅读 php 手册:http://php.net/manual/en/pdostatement.fetch.php

    【讨论】:

      【解决方案3】:

      首先,$results = $stmt-&gt;fetch(PDO::FETCH_ASSOC);

      那么你需要:

      $nestedData[] = empty($value) === false ? $value : "";
      

      需要看起来像

      $nestedData[$column_name] = empty($value) === false ? $value : "";
      

      其中$column_name 是字段的名称。查看manual 了解如何获取您需要的字段名称。

      这样的事情可能会奏效:

      foreach ($row AS $key => $value)
      {
          $nestedData[$key] = empty($value) === false ? $value : "";
      }
      

      【讨论】:

        【解决方案4】:

        你可以做foreach循环而不是for循环

        foreach($array as $key=>$element){
            $nesteddata[$key] = $element;
        }
        

        【讨论】:

          猜你喜欢
          • 2014-10-05
          • 2020-10-19
          • 2014-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-18
          • 2011-12-14
          • 2013-06-03
          相关资源
          最近更新 更多