2013-05-17 5 views
0

Fetching строки , как объекты из базы данных MySQL с помощью MySQLi :: fetch_object (все PHP5), они выглядят, как это на var_dump:PHP '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. Как сделать я, чтобы проверить погода $ экспорт класс Anonymouse из Mysqli fetch_object?
+2

Хм ... http://3v4l.org/MJtWp? Вы уверены, что на самом деле что-то передаете/правильно? «*** Ничего *** не дано», похоже, говорит иначе. – deceze

+1

см. Руководство [fetch-object] (http://php.net/manual/en/mysqli-result.fetch-object.php), вы можете установить имя класса, но если не указано, возвращается объект '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++; 
} 
Смежные вопросы