1
私はzend framework3を使用しており、データベース用にMysqlドライバを使用しています。私は、データを取得するために以下のコードを使用しています :私はこれを反復していたとき、私はエラーを取得していますzf3のResultSetオブジェクト配列からデータを取得できません
Zend\Db\ResultSet\ResultSet Object
(
[allowedReturnTypes:protected] => Array
(
[0] => arrayobject
[1] => array
)
[arrayObjectPrototype:protected] => ArrayObject Object
(
[storage:ArrayObject:private] => Array
(
)
)
[returnType:protected] => arrayobject
[buffer:protected] =>
[count:protected] =>
[dataSource:protected] => Zend\Db\ResultSet\ResultSet Object
(
[allowedReturnTypes:protected] => Array
(
[0] => arrayobject
[1] => array
)
[arrayObjectPrototype:protected] => ArrayObject Object
(
[storage:ArrayObject:private] => Array
(
)
)
[returnType:protected] => arrayobject
[buffer:protected] => -1
[count:protected] =>
[dataSource:protected] => Zend\Db\Adapter\Driver\Mysqli\Result Object
(
[resource:protected] => mysqli_result Object
(
[current_field] => 0
[field_count] => 8
[lengths] =>
[num_rows] => 15
[type] => 0
)
[isBuffered:protected] => 1
[position:protected] => 0
[numberOfRows:protected] => -1
[currentComplete:protected] =>
[nextComplete:protected] =>
[currentData:protected] =>
[statementBindValues:protected] => Array
(
[keys] =>
[values] => Array
(
)
)
[generatedValue:protected] => 0
)
[fieldCount:protected] => 8
[position:protected] => 0
)
[fieldCount:protected] =>
[position:protected] => 0
)
:私はこのデータをのvar_dump場合は、以下のよう
$con = $this->adapter;
$select = $this->sql->select();
$select->from('nav_menu');
$selectString = $this->sql->getSqlStringForSqlObject($select);
$results = $con->query($selectString, $con::QUERY_MODE_EXECUTE);
$resultSet = new ResultSet();
$resultSet->initialize($results);
私は結果を取得しています以下の値を取得してください:
foreach ($resultSet as $key => $value) {
$array[$i]['id'] = $value->id;
$array[$i]['name'] = $value->name;
$array[$i]['label'] = $value->label;
$array[$i]['route'] = $value->route;
$array[$i]['parent_id'] = $value->parent_id;
$i++;
}
私は間違っていません。一方、num_rowsは15ですが、これはZF2でうまくいきます。 いずれかのお手伝いをいただければ幸いです。
は、私は多くのことを試してみました
$statement = $this->sql->prepareStatementForSqlObject($select);
$results = $statement->execute();
でコード
$selectString = $this->sql->getSqlStringForSqlObject($select);
$results = $con->query($selectString, $con::QUERY_MODE_EXECUTE);
を置き換えるならば、私が得ることがわかりresult.But私は
を通じて結果を取得しておりませんなぜ私の質問$selectString = $this->sql->getSqlStringForSqlObject($select);
$results = $con->query($selectString, $con::QUERY_MODE_EXECUTE);
ありがとうclearificationのためにあなたが正確に同じを使用している文を、準備して。 –
プロシージャを呼び出す方法を知っていますか。私はこのコードを使用しています $ results = $ con-> query( 'CALL 'fetching_menu'(?)'、$ spParams); \t \t $ resultSet =新しいResultSet; \t \t $ resultSet-> initialize($ results); ここで、$ spParams = array( 'backend'); エラーが発生しています。 –
私はこれを解決しました。私は $ spParams = ['バックエンド']を使用しました。 \t \t $ステートメント= $ con-> createStatement( 'CALL 'fetching_menu'(?)'、$ spParams); \t \t \t \t $ result = $ statement-> execute(); \t \t \t \t $ resultSet = new ResultSet; \t \t \t $ resultSet-> initialize($ result); –