php OOP 错误:在第 7 行的 c:blah/bla/../\engine\admin\cms.class.php 中调用 null 上的成员函数 query()
Posted
技术标签:
【中文标题】php OOP 错误:在第 7 行的 c:blah/bla/../\\engine\\admin\\cms.class.php 中调用 null 上的成员函数 query()【英文标题】:php OOP error: Call to a member function query() on null in c:blah/bla/../\engine\admin\cms.class.php on line 7php OOP 错误:在第 7 行的 c:blah/bla/../\engine\admin\cms.class.php 中调用 null 上的成员函数 query() 【发布时间】:2016-07-24 22:19:03 【问题描述】:尝试在另一个类中打开扩展类时发生错误..
mydb.php
<?php
class mydb
public $conn;
function __construct()
$this->conn=new mysqli("localhost","root","","akshaya");
$this->_conn=$this->conn;
if(!$this->conn)
echo "mysql connection error";
else
return $this->conn;
?>
login.class.php
<?php
include_once __DIR__.'\..\mydb.php';
class vishnuADMIN extends mydb
public function login($uname,$password)
$uname=$this->conn->real_escape_string($uname);
$password=$this->conn->real_escape_string($password);
$password="s4l8".sha1($password);
$q="select * from user where uname='$uname' and password='$password'";
$res=$this->conn->query($q);
if(mysqli_num_rows($res))
// (!isset($_SESSION))? session_start() :"";
$_SESSION["user"]=$uname;
return true;
else
return false;
public function register($uname,$password)
$password="s4l8".sha1($password);
echo $q="INSERT INTO user(uname,password) VALUES ('$uname','$password')";
$res=$this->conn->query($q);
if($res)
(!isset($_SESSION))?session_start():"";
$_SESSION["user"]=$uname;
return true;
else
return false;
public function logincheck()
// (!isset($_SESSION))?session_start():"";
if(isset($_SESSION["user"]))
return true;
else
return false;
public function logout()
// (!isset($_SESSION))?session_start():"";
session_unset();
//$obj=new vishnuADMIN();
//if($obj->logincheck())
// echo "hai";
//
cms.class.php
<?php
class paginator_vishnukumar extends mydb
private $_limit,$_page,$_query,$_total,$_conn;
public function __construct( $query )
$this->_query = $query;
$rs= $this->conn->query( $this->_query );
$this->_total = $rs->num_rows;
public function getData( $page = 1,$limit = 10 )
$this->_limit = $limit;
$this->_page = $page;
/*
some blah blah codes...
*/
public function createLinks( $links, $list_class )
if ( $this->_limit == 'all' )
return '';
/*
some blah blah codes...
*/
return $html;
?>
admin.php
<?php
require 'engine/vishnuHTML.class.php';
require 'engine/admin/login.class.php';
$html=new vishnuHTML();
(!isset($_SESSION))?session_start():"";
$html->head();
$html->navigation();
$log=new vishnuADMIN();
/* vishnuADMIN::login("vishnu","vishnukumar"); */
if(isset($_POST['submit']))
if($log->login($_POST['uname'],$_POST['password']))
logedin();
else
echo "invalid";
if($log->logincheck())
logedin();
else
loginform();
?>
<?php
$html->footer();
function loginform()
?>
<div class="row">
<div class="login columns">
<div class="four column">
<form method="post" action="">
<label>User name</label>
<input type="text" name="uname"><br>
<label>Password</label>
<input type="password" name="password"><br>
<input type="submit" value="go" name="submit"><br>
</form>
</div>
</div>
</div>
<?php
function logedin()
require 'engine/admin/cms.class.php';
$limit = ( isset( $_GET['limit'] ) ) ? $_GET['limit'] : 25;
$page = ( isset( $_GET['page'] ) ) ? $_GET['page'] : 1;
$links = ( isset( $_GET['links'] ) ) ? $_GET['links'] : 7;
$query = "SELECT * FROM pages";
$Paginator = new paginator_vishnukumar( $query );
$results = $Paginator->getData( $page, $limit );
?>
请检查此代码
抛出错误: 致命错误:在第 7 行的 C:..\engine\admin\cms.class.php 中的 null 上调用成员函数 query()
login.class.php 和 cms.class.php 中的扩展类 mydb 如何在多个页面/类中使用连接变量类..
【问题讨论】:
显然$this->conn
在调用$this->conn->query
时没有定义
我认为 $this->conn 应该是 $this->_conn
“只有在创建对象时才会调用构造函数!”,简单地扩展类不会调用构造函数。
【参考方案1】:
您需要在 cms.class.php 中调用 parent::__construct();
<?php
class paginator_vishnukumar extends mydb
private $_limit,$_page,$_query,$_total,$_conn;
public function __construct( $query )
parent::__construct(); // <-- will initiate the connection
$this->_query = $query;
$rs= $this->conn->query( $this->_query );
// ....
【讨论】:
以上是关于php OOP 错误:在第 7 行的 c:blah/bla/../\engine\admin\cms.class.php 中调用 null 上的成员函数 query()的主要内容,如果未能解决你的问题,请参考以下文章
我在第79行的REST.php中有400个错误请求,实现了GMAIL Api PHP
致命错误:在第 2 行的 index.php 中调用未定义函数 get_header()
困惑:PHP 致命错误:在第 0 行的未知中抛出没有堆栈帧的异常?
致命错误:在第 11 行的 E:\xampp\htdocs\teach\mongo\index.php 中找不到类 'MongoClient' - Mongodb + XAMPP
Laravel 错误 - 未知:需要打开失败'。 ./public' (include_path='.;C:\php\pear\') 在第 0 行的未知