2014-05-02 137 views
1

我有一个非常简单的SELECT查询内返回false(失败)的PHP类的上下文,但我无法检索相关的错误信息。奇怪的是,调用工作正常,直到我不得不重新组织mysql数据库 - 没有修改PHP代码显然失败 - 结果是错误的 - 但错误信息在哪里?mysqli查询返回false但没有错误消息

代码如下:

<?php 
class Database { 
    private $_connection; 
    private $_result; 
    private $_lastQuery; 
    private $_error; 

    public function __construct($dbase) { 
     $this->_connection = new mysqli(DB_SERVER, DB_USER, DB_PASS, $dbase); 
     if (mysqli_connect_error()) { 
      trigger_error("failed to connect to MySQL: " . mysqli_connect_error(), E_USER_ERROR); 
     } 
     mysqli_set_charset($this->_connection, 'utf8'); 
    } 

    public function query($query) { 
     $this->_lastQuery = $query; 
     $this->_result = mysqli_query($this->_connection, $query); 
     $this->_error = $this->_connection->error; 
     return $this->_result; 
    } 
} 

没有错误字符串出现在$此 - > _错误;在调试过程中(PHPStorm)检查时也没有显示。 通过命令行执行查询时,会生成(预期)错误消息。

+0

$ this - > _ error从哪里来?它没有在你的数据库类中定义。 –

+1

TBH,我不完全确定这一点,但不应该'$ this - > _ error = $ this - > _ connection-> error;'是$ this - > _ error = $ this - > _ connection - > _ error; '? –

+0

为什么你要将查询结果存储在类变量中? –

回答

2

看来,问题实际上是与xdebug。

+0

这里的同一探索,我会很高兴发布整个班级,所有80行。但是如果你用这个错误设置了一些变量,你可能会在调试器中看到这个错误(仅在这个变量中):$ myerr = $ mysqli-> error; // $ mysqli-> error是空的,而$ myerr不是 – Tertium

相关问题