2012-02-18 34 views
-2

我試着像這樣的東西:綁定到類的屬性,並取到數組 - PHP的mysqli bind_result

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

在結束 - 我只有最後一排的陣列。爲什麼?當我嘗試使用數組(和2個字段),沒有「分類」類 - 它的工作,但我需要把查詢結果放在代表錶行的對象數組。什麼即時做錯了?即時通訊新的PHP。

回答

0

我不得不序列化和反序列化綁定到結果集的類。

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

如果您嘗試附加到$output數組的語法是。

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

在PHP中一起添加數組合並它們看起來並不像你想要的。

+1

一些進一步閱讀:array_merge()對數組union運算符:http://unix0.wordpress.com/2012/01/08/php-array_merge-vs-plus-union-operator/ – biziclop 2012-02-18 07:16:50

+0

我有兩個爲什麼你使用array(clone $ kat)。不應該只是'= clone $ kat'。而且克隆只會做淺拷貝。所以這個代碼在上面的情況下工作嗎? – WordsWorth 2012-02-18 07:17:38

+0

@WordsWorth我剛剛使用了與OP代碼中相同的賦值。我不知道他的意圖是什麼,因爲他只是'print_r()''它。 – 2012-02-18 07:19:50