Php 来自SQL列的一维数组结果
假设我有这个查询,我得到以下结果:Php 来自SQL列的一维数组结果,php,sql,zend-framework,db2,Php,Sql,Zend Framework,Db2,假设我有这个查询,我得到以下结果: SELECT col FROM table 是否有一些SQL语句可用于从相同的数据中获取: array(2) { 0 => array(1){ "COL"=>"value1" }, 1 => array(1){ "COL"=>"value2" } } 我正在使用zend框架和db2。如果不能通过SQL完成,那么可以通过Zend完成吗 谢谢 编辑:我应该澄清一下,我可以用循环或函数来完成。我只是想知道是否有一种内置的方法可以节省几行代
SELECT col FROM table
是否有一些SQL语句可用于从相同的数据中获取:
array(2) {
0 => array(1){
"COL"=>"value1"
},
1 => array(1){
"COL"=>"value2"
}
}
我正在使用zend框架和db2。如果不能通过SQL完成,那么可以通过Zend完成吗
谢谢
编辑:我应该澄清一下,我可以用循环或函数来完成。我只是想知道是否有一种内置的方法可以节省几行代码,让自己成为一个漂亮的smartpants。试试这样的自定义功能:-
array(2) {
0=>"value1",
1=>"value2"
}
尝试以下自定义函数:-
array(2) {
0=>"value1",
1=>"value2"
}
我是这样做的:
在我的模型中:
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;
}
在我的控制器中:
public function getRecords() {
$select = $this->select();
return $this->fetchAll($select);
}
我是这样做的:
在我的模型中:
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;
}
在我的控制器中:
public function getRecords() {
$select = $this->select();
return $this->fetchAll($select);
}
我认为最简单的方法是:
$records = $mdl->getRecords();
$recordsArray = $records->toArray();
然后在视图内部:这取决于函数重新启动的内容:
案例:其fetchAll:
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
案例:它的fetchRow:不需要使用foreach。
希望有帮助。我认为最简单的方法是:
$records = $mdl->getRecords();
$recordsArray = $records->toArray();
然后在视图内部:这取决于函数重新启动的内容:
案例:其fetchAll:
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
案例:它的fetchRow:不需要使用foreach。
我希望它能有所帮助。您可以尝试fetchPairs方法。这可能就是你想要的,至少在有限的范围内
fetchPairs方法返回键值对数组中的数据,
作为一个关联数组,每行有一个条目。关键是
关联数组取自
选择查询。该值取自返回的第二列
选择查询。查询返回的任何其他列都是
丢弃
您还可以尝试将fetch方法设置为Zend_Db::fetch_COLUMN
Zend_Db::FETCH_COLUMN:返回值数组中的数据。价值
每个数组都是结果集的一列返回的值。通过
默认情况下,这是第一列,索引为0
您可以尝试fetchPairs方法。这可能就是你想要的,至少在有限的范围内
fetchPairs方法返回键值对数组中的数据,
作为一个关联数组,每行有一个条目。关键是
关联数组取自
选择查询。该值取自返回的第二列
选择查询。查询返回的任何其他列都是
丢弃
您还可以尝试将fetch方法设置为Zend_Db::fetch_COLUMN
Zend_Db::FETCH_COLUMN:返回值数组中的数据。价值
每个数组都是结果集的一列返回的值。通过
默认情况下,这是第一列,索引为0
不为我工作。说我的结果不是对象。我正在使用:$result=$db->fetchAll$query,array$condition;然后返回$result->toArray;不为我工作。说我的结果不是对象。我正在使用:$result=$db->fetchAll$query,array$condition;然后返回$result->toArray;您使用的是哪个DB2平台?DB2 for i、LUW或z/OS?您使用的是哪种DB2平台?DB2 for i、LUW还是z/OS?