获取致命错误:在第32行的C:\ wamp \ www \ quotes \ paginator.php中调用非对象的成员函数query()

时间:2015-07-31 11:44:45

标签: php mysql pagination

我正在尝试分页,但我得到了

  

致命错误:在第32行的C:\ wamp \ www \ quotes \ paginator.php中调用非对象的成员函数query()

我该怎么做才能摆脱这个错误?我必须如下页面。 我阅读了给我的参考资料并从代码中获取了帮助,但我得到了致命的错误。如上所述。请查看我的代码并告诉我在哪里。 我有两页。 index.php和paginator.php 为什么我得到致命错误我无法理解。

的index.php

"p1"

paginator.php

     <!DOCTYPE html>

    <?php
    require_once 'Paginator.php';

    $con       = new mysqli( 'localhost', 'root', 'pixster', 'quotes' );
    $limit      = ( isset( $_GET['limit'] ) ) ? $_GET['limit'] : 25;
    $page       = ( isset( $_GET['page'] ) ) ? $_GET['page'] : 1;
    $links      = ( isset( $_GET['links'] ) ) ? $_GET['links'] : 7;
    $query      = "SELECT table2.col2 AS a,table1.col2 AS b, table1.col1 AS  c, table1.q_url AS d FROM table2, table1 WHERE table2.col1 = table1.col4 ";//  AND table2.friendly_url= '".$authorname."'";

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

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

    </tr>
    <?php endfor; ?>
    <html>
    <head>
    <title>quotes Pagination</title>
    <link rel="stylesheet" href="css/bootstrap.min.css">
    </head>
    <body>
    <div class="container">
    <div class="col-md-10 col-md-offset-1">
    <h1>PHP Pagination</h1>
    <table class="table table-striped table-condensed table-bordered table- rounded">
    <thead>
    <tr>
    <th width="20%">Sr. No</th>
    <th width="20%">Quotes</th>

      </tr>
      </thead>
      <tbody>
      <?php for( $i = 0; $i < count( $results->data ); $i++ ) : ?>
      <tr>
      <td><?php echo $results->data[$i]['$i']; ?></td>
      <td><?php echo $results->data[$i]['$row['b']']; ?></td>

      </tr>
      <?php endfor; ?></tbody>
      </table>
      <?php echo $Paginator->createLinks( $links, 'pagination pagination-sm' ); ?> 
    </div>
    </div>
    </body>
    </html>

3 个答案:

答案 0 :(得分:3)

首先,您要将您的连接声明为

$this->_con = $con;

但将其称为$this->_conn->

然后你的构造函数不正确

public function _construct( $con, $query )
               ^ missing one here

编辑:,应该是:(我认为很明显应该添加)

public function __construct( $con, $query )
                ^^ there are 2 now

你的构造

缺少下划线

当您处于开发阶段时,请务必检查错误。

参考:http://php.net/manual/en/language.oop5.php

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

答案 1 :(得分:0)

问题似乎在于:

$rs = $this->_conn->query( $query );

您的班级Paginator包含名为_con而非_conn的变量,这是一个经典的复制粘贴错误。

修改

在OP提到他粘贴的代码不正确之后,似乎_con对象为null,但它被设置为构造函数。但是,在闭包外观上,根本没有构造函数。

构造函数魔术方法的语法定义为here

答案 2 :(得分:0)

Paginator.php中的

$this->_conn$this->_con

$rs = $this->_con->query( $query );