2012-07-08 132 views
0

我正在嘗試爲MySQLi編寫自定義類,但在使用num_rows時,我一直收到錯誤「嘗試獲取非對象的屬性」 。誰能幫忙?「嘗試獲取非對象的屬性」 - 自定義mysqli類

class db { 
    private $host = "***"; 
    private $user = "***"; 
    private $pass = "***"; 
    private $database; 

    private $connection; 
    private $result; 
    public $sql; 

    function __construct($database) { 
     if (!empty($database)) $this->database = $database; 
     $this->connection = new mysqli($this->host,$this->user,$this->pass,$this->database); 
     return $this->connection; 
    } 

    public function fetchRowNum($sql) { 
     if (!empty($sql)) { 
      $this->sql = $sql; 
      return $this->connection->query($sql)->num_rows; 
     } else { 
      throw new Exception("Error fetching row"); 
     } 
    } 
} 
+0

'mysqli :: query()'返回一個'mysql_result'資源。您的查詢'$ sql'由於某種原因失敗,您在嘗試從它獲取'mysql_result :: $ num_rows'之前未執行錯誤檢查。 – 2012-07-08 20:57:59

回答

1

mysqli_query()並不總是返回一個mysqli_result對象,它可以返回TRUEFALSE以及這將導致你所得到的錯誤。

商店query()返回值和檢查,看它是否是TRUEFALSE您嘗試訪問它作爲一個對象並獲取num_rows屬性之前。失敗

返回FALSE

從手動約mysqli::query()。對於成功的選擇SHOWDESCRIBEEXPLAIN查詢mysqli_query()會返回一個mysqli_result對象。對於 其他成功查詢mysqli_query()將返回

+0

謝謝!我已經設法弄清楚了。 – Jimmy 2012-07-08 21:10:33

相關問題