2013-05-17 54 views
0

讀取行爲通過的mysqli從MySQL數據庫對象 :: fetch_object(所有PHP5),他們看起來是這樣的的var_dumpPHP的stdClass的不是對象「

class stdClass#5 (5) { 
    public $id => 
    string(2) "23" 
    public $started => 
    NULL 
    public $finished => 
    NULL 
    public $mode => 
    string(3) "XML" 
    public $mail => 
    string(0) "" 
} 

現在就這樣做:

public function __construct($export) { 
     var_dump($export); 
     if (!($export instanceof stdClass)) { 
//throw new exception ... 
} 

或本

public function __construct(stdClass $export) { 
     var_dump($export); 
//... 

,甚至與is_object($export) - 失敗

其實我得到一個異常:

Fatal error: Uncaught exception 'Exception' 
with message '$export is not an object' 

Argument 1 passed to ConverterXML::__construct() 
must be an instance of stdClass, none given 
  1. 爲什麼
    • 甚至更​​好 -
  2. 如何我去檢查的天氣$出口是從mysqli的fetch_object的anonymouse類?
+2

嗯... http://3v4l.org/MJtWp?你確定你確實傳遞了一些東西/正確的東西? 「***無***給」似乎是另有說法。 – deceze

+1

請參閱[fetch-object](http://php.net/manual/en/mysqli-result.fetch-object.php)手冊,您可以設置class_name,但如果未指定,則返回'stdClass'對象。 –

+0

var_dump顯示$ export包含更多的'None'。它實際上包含一個stdClass。 – DanFromGermany

回答

0

應該沒有問題,如果你正在做正確是這樣的:

$result = $mysqli->query($query); 
while ($obj = $result->fetch_object()) { 
    var_dump($obj); 
    var_dump($obj instanceof stdClass); 
    var_dump(is_object($obj)); 
} 

,或者,如果你想不同對象的實例比stdClass的:

class Employee { 
    public function __construct($id) { 
     $this->id = $id; 
    } 
} 
$i = 0; 
while ($obj = $result->fetch_object("Employee", array($i))) { 
    var_dump($obj); 
    $i++; 
}