-2

私はこのようなことを試みています:

class kategoria
{
    public $IdKat;
    public $IdKatNad;
    public $NazwaKat;
}

function get_cats()  
{  

    $query = "SELECT IdKat, NazwaKat, OpisKat  FROM `kategorie`"; 

    try
    {
        $stmt = $this->link->prepare($query);

        /* bind parameters for markers */
        //$stmt->bind_param("i", $idKat);

        $stmt->execute();
        $kat = new kategoria();

        $stmt->bind_result(
                $kat->Idkat, 
                $kat->NazwaKat, 
                $kat->OpisKat
                );


        $output = array();

        while ($stmt->fetch()) {
            $output += array(clone $kat);
        }

        $stmt->close();
    }
    catch (Exception $e)
    {
        echo $e;
    }

    echo '<pre>';
    print_r($output);
    echo '</pre>';
}

最後に-私は配列の最後の行しか持っていません。なんで?「kategoria」クラスを使用せずに配列(および2つのフィールド)を試してみたところ、機能しましたが、クエリ結果をテーブルの行を表すオブジェクトの配列に配置する必要があります。何が間違っているのですか?PHPの新機能です。

4

2 に答える 2

1
$output += array(clone $kat);

配列に追加しようとしている場合$output、構文はです。

$output[] = array(clone $kat); // or array_push($output, array(clone $kat));

PHPで配列を一緒に追加すると、それらがマージされますが、これは希望どおりではないようです。

于 2012-02-18T07:08:45.813 に答える
0

結果セットにバインドされたクラスをシリアル化および逆シリアル化する必要がありました。

$output += array(deserialize(serialize($kat)));
于 2012-03-08T15:54:39.697 に答える