2015-08-16 6 views
1

Я получаю эту ошибку:Примечание: Попытка получить свойство необъектных

(!) Notice: Trying to get property of non-object in C:\wamp\www\admin\paginator\Paginator.class.php on line 18.

индексная страница:

<?php 
require_once 'paginator/Paginator.class.php'; 

    $conn  = new mysqli('localhost', 'USER', 'PASS'); 
    mysqli_select_db($link, "DB"); 
    $limit  = (isset($_GET['limit'])) ? $_GET['limit'] : 25; 
    $page  = (isset($_GET['page'])) ? $_GET['page'] : 1; 
    $links  = (isset($_GET['links'])) ? $_GET['links'] : 7; 


    $query  = " 
SELECT utilizatori.id, utilizatori.utilizator, utilizatori.nume, utilizatori.rol_user 
AS ID, LOGIN, NUME, ROL 
FROM utilizatori 
ORDER BY `utilizator` ASC"; 

    $Paginator = new Paginator($conn, $query); 

    $results = $Paginator->getData($page, $limit); 
for($i = 0; $i < count($results->data); $i++) : ?> 
     <tr> 
       <td><?php echo $results->data[$i]['ID']; ?></td> 
       <td><?php echo $results->data[$i]['NUME']; ?></td> 
       <td><?php echo $results->data[$i]['LOGIN']; ?></td> 
       <td><?php echo $results->data[$i]['ROL']; ?></td> 
     </tr> 
<?php endfor; ?> 

paginator.class.php:

<?php 

class Paginator { 

     private $_conn; 
     private $_limit; 
     private $_page; 
     private $_query; 
     private $_total; 


public function __construct($conn, $query) { 

    $this->_conn = $conn; 
    $this->_query = $query; 

    $rs= $this->_conn->query($this->_query); 
    $this->_total = $rs->num_rows; 

Где 18 строк i s:

$this->_total = $rs->num_rows; 

Я проверил все, но не могу понять, где проблема. Может ли кто-нибудь увидеть, где проблема больше, чем я, пожалуйста?

+0

Я предполагаю, что '$ this -> _ conn-> query()' не возвращает объект на основе сообщения об ошибке. –

ответ

2

Ответ: $rs не является объектом. И поэтому у него нет ни свойств, ни методов, и вы не можете относиться к нему как к подобному объекту: $rs->num_rows.

Я предполагаю, что (так как num_rows является свойством mysqli_result), что свойство $this->_conn вашего класса является mysqli объектом. Если вы посмотрите на documentation for mysqli::query(), вы увидите, что этот метод будет возвращать:

  • mysqli_result объект для SELECT, SHOW, DESCRIBE или EXPLAIN
  • false для отказа
  • true для других успешных запросов

Короче говоря, $rs не является mysqli_result в вашем примере. Ваш запрос не является ни одним из перечисленных выше, или он не работает.

Может быть, вы могли бы сделать код более надежным с чем-то вроде:

if (false === $rs) { 
    // uh oh... 
    throw new RuntimeException(
     sprintf('mysqli error! %s', $this->_conn->connect_error) 
    ); 
} 

Пожалуйста, обратите внимание, что не испытывается. Надеюсь, это поможет :)

+0

Я ответил, не зная, что вы уже объяснили это немного подробнее. Удаление моего ответа :) – NemanjaSRB

+0

Итак, вы говорите, что запрос может быть неправильным, не так ли? –

+1

Привет. Ну, я не делаю этого предположения, потому что я не знаю, каков ваш запрос, но это, безусловно, возможность, так как это один из результатов. Если '$ rs' является' false', запрос не удался, и свойство 'connect_error' должно дать вам некоторую значимую информацию о том, что могло произойти неправильно. –