2016-07-06 84 views
0
獲取類

對不起,這個問題太糟糕了有一個合適的回答,所以現在我編輯:PDO類擴展和PHP


手冊上說:

PDO :: FETCH_CLASS:返回指定類的實例,將每行的列映射到類中的命名屬性。

我的疑問是,如果類擴展形成另一個具有更多屬性的類,將這個屬性實例化?

對不起,如果我不清楚這個問題,我不是說英語的人。謝謝你們。

+0

哪裏是$結果定義? ;-) –

+1

該代碼沒有意義。你不連接到數據庫,你的類沒有方法,'$ result'永遠不會被定義,你在對象的外部使用'$ this',等等等等等等。除非你在別的地方做,否則你只是假設查詢總是會成功的。 –

+2

除屬性聲明外,類中的所有代碼必須位於函數中。你不能只有這樣的陳述。 – Barmar

回答

1

一個很好的問題。

對於PDO,類層次結構實際上並不重要。 PDO正在做的是簡單地從數據庫中取出列,並將它們分配給類屬性,而不管類定義或繼承。

  • 如果一個屬性不存在,PDO會嘗試創建它。
  • 如果有一個屬性沒有可以映射的列 - 那麼PDO將使它獨立。

就這麼簡單。所以,它應該創建你從數據庫中選擇的任何東西。

至於你之前在你的問題中的特定代碼 - 你必須調試它。看,看看是否有任何東西被提取,你正在使用任何方法printNickName()。但是這種方法或任何中間過程都可能有任何錯誤。讓我建議你創建空的類,獲取你的數據,並直接檢查屬性。

確保所有屬性設置正確後,您可以嘗試使用您的自定義類定義。要調試返回的數據我會建議使用

$stmt->execute(); 
var_dump($stmt->fetchAll(PDO::FETCH_CLASS, 'User')); 

您可以學習的PDO類處理等細節,從我的文章,Fetching objects with PDO

+0

感謝您的回答!但是,當我這樣做,我得到這個: 陣列 ( [0] =>用戶對象 ( [ID用戶:用戶:私人] => 1 [名稱:人:私人] => [姓:人民:私人] => [idPeople:人:私人] => [名] =>亞歷山德羅 [姓氏] =>克魯茲 [idPeople] => 5 ) ) – facumontero

+0

@facumontero我覺得它的東西與你的查詢。你可以用'var_dump($ stmt-> fetchAll(PDO :: FETCH_ASSOC));'?來檢查它嗎? –