2013-10-13 44 views
0

我有一個帶有id,關鍵字和值的類。 我取出由使用PDO列名在fetchAll後出現在類中

if ($stmt->execute()) { 
    $o = $stmt->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Setting", array('id', 'keyword','value')); 
} 

設置成類設置命名錶中的數據當我看的$ O I看到下面的內容

Array ([0] => Setting Object ([id] => id [keyword] => keyword [value] => value [Id] => 1 [Keyword] => AdminMail [Value] => [email protected])) 

我的類看起來像這樣

class Setting { 
var $id; 
var $keyword; 
var $value; 

function __construct($id,$ke,$va) { 
    $this->id = $id; 
    $this->keyword = $ke; 
    $this->value = $va; 
} 

public function getKeyword() { 
    return $this->keyword; 
} 

public function getValue() { 
    return $this->value; 
} 
} 

我期望$ o-> getValue返回[email protected],但它會返回值。

有人可以告訴我爲什麼「[id] => id [keyword] => keyword [value] => value」出現在我的表的實際輸出之前?

+0

的問題是在使用fetchall命令。數組中的名稱('id','key','value')與我在查詢的表中的名稱不同。 –

回答

0

我不知道,爲什麼這個棘手的語法糖是如此的吸引力。
它是如何比普通,簡單,可讀的代碼這樣更好:

function __construct($init) { 
    $this->id  = $init['id']; 
    $this->keyword = $init['ke']; 
    $this->value = $init['va']; 
} 
... 
$stmt->execute(); 
$o = new Settings($stmt->fetchAll()); 
+0

它不工作。我得到一個空的Setting對象,其中有任何數據。 –

+0

那麼,這段代碼並不打算複製粘貼,而是顯示初始化對象的常規和常用方式。你是否熟悉它?你知道我發佈的代碼嗎? –

+0

如果我正確理解代碼,$ stmt-> fetchAll()應該生成一個傳遞給構造函數的數組,它將所有字段設置爲數組中的值。那是對的嗎? –