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() メソッドは、行ごとに 1 つのエントリを持つ連想配列として、キーと値のペアの配列でデータを返します。この連想配列のキーは、SELECT クエリによって返される最初の列から取得されます。値は、SELECT クエリによって返された 2 番目の列から取得されます。クエリによって返されたその他の列は破棄されます。

fetch メソッドを に設定してみてくださいZend_Db::FETCH_COLUMN

Zend_Db::FETCH_COLUMN: 値の配列でデータを返します。各配列の値は、結果セットの 1 つの列によって返される値です。デフォルトでは、これは 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

次に、ビュー内:関数が何を返すかによって異なります:ケース:その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 に答える