0
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 可以完成吗?

谢谢

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

4

4 回答 4

2

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

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

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

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

$db->setFetchMode(Zend_Db::FETCH_COLUMN);
于 2013-06-20T09:03:42.017 回答
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; 
 } 
于 2013-06-19T17:32:52.137 回答
0

我认为最简单的方法是:

 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

然后在视图内部:这取决于您的函数返回的内容: case: its fetchAll:

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

案例:它的 fetchRow:不需要使用 foreach()。我希望它有所帮助。

于 2013-06-19T19:20:27.420 回答
0

这是我的做法:

在我的模型中:

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

return $this->fetchAll($select);
}

在我的控制器中:

$records = $mdl->getRecords();
$recordsArray = $records->toArray();
于 2013-06-19T17:46:17.273 回答