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吗?
由于
编辑:我应该澄清一下,我可以用循环或函数来完成。我只是想知道是否有内置的方法来保存几行代码并且都是花哨的智能裤。答案 0 :(得分: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;
}
答案 1 :(得分:2)
您可以尝试使用fetchPairs()
方法。这可能是你正在寻找的,至少是以有限的方式。
fetchPairs()方法返回键值对数组中的数据, 作为一个关联数组,每行有一个条目。关键是这个 关联数组取自由返回的第一列 SELECT查询。该值取自返回的第二列 SELECT查询。查询返回的任何其他列都是 丢弃。
您也可以尝试将抓取方法设置为Zend_Db::FETCH_COLUMN
。
Zend_Db :: FETCH_COLUMN:返回值数组中的数据。中的价值 每个数组都是结果集的一列返回的值。通过 默认情况下,这是第一列,索引为0。
$db->setFetchMode(Zend_Db::FETCH_COLUMN);
答案 2 :(得分:0)
我是这样做的:
在我的模型中:
public function getRecords() {
$select = $this->select();
return $this->fetchAll($select);
}
在我的控制器中:
$records = $mdl->getRecords();
$recordsArray = $records->toArray();
答案 3 :(得分: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:它的fetchAll:
<?php foreach ($this->results as $item): ?>
<?=$item['address']?> /* access fields */
<?php endforeach ?>
case:它的fetchRow:不需要使用foreach()。 我希望它有所帮助。