2015-05-01 2 views
0

У меня недавно возникла проблема, что я не смог найти решение. У меня есть базовый класс, который содержит код следовать в своем конструкторе:Почему я не могу использовать атрибут, содержащий объект mysqli?

public function __construct() 
{ 

    $this->runDatabaseConnection(); 
    $this->fetchSettings(); 


} 

private function runDatabaseConnection() 
{ 
    global $config; 

    $this->db = new mysqli($config['db']['server'], $config['db']['user'], $config['db']['password'], $config['db']['name']); 
    $this->db->set_charset($config['db']['charset']); 

} 

Как вы можете видеть, что я хранится объект в атрибуте под названием «дб»

После этого я сделал метод в тот же класс, который выполняет данный запрос:

public function query($queryStr) 
{ 

    return $this->db->query($queryStr) or die($this->db->error.($this->debugMode ? '<br><b>Query: </b><i>'.$queryStr.'</i>' : '')); 

} 

Сейчас вне класса, когда я использовать что-то вроде:

$studentsQuery = $core->query("SELECT * FROM ".TP."students"); 

$ studentsQuery переменная, похоже, является логическим значением, а не ожидаемым ожиданием, которое я ожидал. Итак, что мне не хватает? Заранее спасибо .

ответ

0

Вы возвращаете результат булевого выражения.

return $this->db->query($queryStr) or die()); 

Так что я предполагаю, что вы хотели сделать было

public function query($queryString) 
{ 
    $result = $this->db->query($queryString); 
    if (!$result) { 
     die(...); 
    } 
    return $result; 
} 
+0

Я сожалею, но делает «возвращение $ результат;» вернуть источник? –

+0

a сохранил результат '$ this-> db-> query()' в переменной '$ result', которую я затем верну. Таким образом, либо из результата 'query()' был 'false', а затем он будет' die() ', или это был ресурс, который возвращается. –

+0

Спасибо, сэр, теперь все было хорошо, я понимаю, почему это не сработало раньше, с наилучшими пожеланиями. –

Смежные вопросы