2015-05-01 110 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']); 

} 

正如你可以看到我存储的对象称为“DB”

之后的属性,我在做的方法

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

谢谢先生,现在它工作得很好,我明白为什么它没有工作之前,最好的问候。 –

相关问题