1

私は zend Framework3 を使用しており、データベースには Mysql ドライバーを使用しています。以下のコードを使用してデータを取得しています。

        $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); 

このデータを var_dump すると、次のような結果が得られます。

   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
)

以下のように値を取得するためにこれを繰り返しているときに、エラーが発生します。

       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 で正常に動作しています。誰からの助けも大歓迎です。

私はたくさん試してみましたが、コードを置き換えると

    $selectString = $this->sql->getSqlStringForSqlObject($select);
    $results = $con->query($selectString, $con::QUERY_MODE_EXECUTE);

とともに

    $statement = $this->sql->prepareStatementForSqlObject($select);
    $results = $statement->execute(); 

その後、結果が得られます。しかし、なぜ結果が得られないのかという私の質問

    $selectString = $this->sql->getSqlStringForSqlObject($select);
    $results = $con->query($selectString, $con::QUERY_MODE_EXECUTE);
4

1 に答える 1