Привязка к свойствам класса и выборка в массив - php mysqli bind_result - PullRequest
0 голосов
/ 18 февраля 2012

Я пытаюсь что-то вроде этого:

<code>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 '
'; }

В конце - у меня есть только последняя строка в массиве. Зачем? Когда я пытался с массивом (и 2 полями), без класса "kategoria" - это работало, но мне нужно поместить результат запроса в массив объектов, представляющих строки таблицы. что я делаю не так? Я новичок в PHP.

Ответы [ 2 ]

1 голос
/ 18 февраля 2012
$output += array(clone $kat);

Если вы пытаетесь добавить в массив $output синтаксис:

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

Добавление массивов в PHP объединяет их, что не похоже на то, что вы хотите.

0 голосов
/ 08 марта 2012

Мне пришлось сериализовать и десериализовать свой класс, связанный с набором результатов.

$output += array(deserialize(serialize($kat)));
...