2014-09-18 3 views
-1

Я не опытный программист и не пытаюсь понять проблему im с созданным классом i.PHP-класс внутри переменной внутри класса

я есть отдельная переменная в классе А, это приватная переменная сохраняет результат запроса к БД MySQL, и им доступ к этой переменной через публичную функцию в классе А.

Моя цель состоит в том, чтобы повторить вне значение частной переменной через публичную функцию. Моя проблема заключается в том, что эта приватная переменная преобразуется в класс при сохранении результатов запроса.

здесь var_dump приватной переменной

object(stdClass)#4 (1) { 
    ["count(*)"]=> string(1) "8" 
} 

им действительно путают о том, как эхо из числа "8"

им пытаются это:

echo $this->private 

, но, как и ожидалось PHP оленья кожа как это и говорит мне следующее:

"Object of class stdClass could not be converted to string" 

Может ли кто-нибудь указать мне в правильном направлении?

вот код:

class Quiz { 

    private $db; 
    private $query; 
    private $questions; 
    private $answers; 
    private $total; 

    public function __construct(){ 
     $this->db = new connection(); 
     $this->db = $this->db->dbConnection();  
    } 

    public function NumRows ($quiz) { 
     $this->query = $this->db->prepare("Select count(*) FROM ".$quiz.""); 
     $this->query->execute(); 
     $this->total = $this->query->fetchObject(); 
     var_dump($this->total); 
     echo $this->total; 
    } 


} 


$quiz = new Quiz(); 
$quiz->NumRows("01_ospf"); 
+1

Было бы полезно с куском кода. – msfoster

+0

'SELECT COUNT (*) AS count'. Затем: 'echo $ quiz-> getPrivate() -> count;' – Flavius

+0

Никогда EVER 'echo' в любой функции, кроме только одной в вашей кодовой базе ENTIRE: функция, которая выглядит как« render ($ template, array $ data) », которая вызывает 'extract()', а затем 'include $ template;'. В любом месте вместо этого используйте возвращаемые значения. – Flavius

ответ

3

$this->private является объектом, так что вам нужно получить доступ к свойству. Имущество называется count(*). Так что используйте это:

echo $this->private->{"count(*)"}; 

Вы должны дать столбец псевдоним, так что вы не должны использовать этот запутанный синтаксис. Например. если вы:

SELECT COUNT(*) AS count ... 

, то вы можете написать:

echo $this->private->count; 
Смежные вопросы