【问题标题】:One dimensional array results from SQL columnSQL 列的一维数组结果
【发布时间】:2013-06-19 17:25:33
【问题描述】:
SELECT col FROM table

假设我有这个查询,我得到以下结果:

array(2) {
0 => array(1){
"COL"=>"value1"
},
1 => array(1){
"COL"=>"value2"
}
}

是否有一些 SQL 语句可以用来从相同的数据中获取:

array(2) {
0=>"value1",
1=>"value2"
}

我正在使用 zend 框架和 db2。如果不能通过 SQL 完成,可以用 Zend 完成吗?

谢谢

编辑:我应该澄清一下,我可以用循环或函数来做到这一点。我只是想知道是否有一种内置方法可以节省几行代码并成为所有花哨的智能裤。

【问题讨论】:

  • 您使用的是哪个 DB2 平台? DB2 for i、LUW 还是 z/OS?

标签: php sql zend-framework db2


【解决方案1】:

你可以试试fetchPairs() 方法。这可能就是您正在寻找的东西,至少在有限的范围内。

fetchPairs() 方法以键值对数组的形式返回数据, 作为一个关联数组,每行有一个条目。这个的关键 关联数组取自返回的第一列 选择查询。该值取自返回的第二列 SELECT 查询。查询返回的任何其他列是 丢弃。

您也可以尝试将 fetch 方法设置为Zend_Db::FETCH_COLUMN

Zend_Db::FETCH_COLUMN:返回值数组中的数据。价值在 每个数组是结果集的一列返回的值。经过 默认情况下,这是第一列,以 0 为索引。

$db->setFetchMode(Zend_Db::FETCH_COLUMN);

【讨论】:

    【解决方案2】:

    试试这样的自定义函数:-

    function myfuntion($array) { 
      if (!is_array($array)) { 
         return FALSE; 
       } 
     $result = array(); 
     foreach ($array as $key => $value) { 
      if (is_array($value)) { 
      $result = array_merge($result, myfuntion($value)); 
       } 
       else { 
       $result[$key] = $value; 
      } 
     } 
    return $result; 
     } 
    

    【讨论】:

      【解决方案3】:

      这是我的做法:

      在我的模型中:

      public function getRecords() {
      $select = $this->select();
      
      return $this->fetchAll($select);
      }
      

      在我的控制器中:

      $records = $mdl->getRecords();
      $recordsArray = $records->toArray();
      

      【讨论】:

      • 不适合我。说我的结果不是对象。我正在使用: $result = $db->fetchAll($query, array($condition));然后返回 $result->toArray();
      【解决方案4】:

      我认为最简单的方法是:

       public function my_function() 
         { 
      
            $db = Zend_Db_Table::getDefaultAdapter();
            $results = $db->fetchAll("SELECT * FROM my_table");
            /* if you want only one row, do something like this*/
            /* $results = $db->fetchRow("SELECT * FROM my_table") */
            return $results;
          }
      /* Then maybe in your controller you can call the function 
      and */
      $results=my_function();
      /*make values avelaible to the view*/
      $this->view->$results=$results
      

      然后在视图内部:这取决于您的函数返回什么: 案例:它的 fetchAll:

      <?php foreach ($this->results as $item): ?>
          <?=$item['address']?> /* access fields */
       <?php endforeach ?>
      

      case: 它的 fetchRow: 不需要使用 foreach()。 希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2011-01-08
        • 1970-01-01
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多