2011-12-15 6 views
-1

У меня есть два класса:Ошибка в PHP и MySQLi

  1. database.php
  2. query.php

Существует ошибка, что я не понимаю:

<?php 
    class database { 
     private $dbname = "class"; 
     private $dbuser = "soroush"; 
     private $dbpass = "passwprd"; 
     private $dbhost = "localhost"; 
     public $sql; 

     function __construct() { 
      $this->sql = new mysqli($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname) ; 
     } 
    } 

    class query extends database { 
     public static function GetStudentDetail() { 
      $query = $this->sql->query("SELECT * FROM user"); // error thrown here 
      $row = $query->fetch_assoc(); return $row; 
     } 
    } 

    var_dump(query::GetStudentDetail()); 
?> 

Ошибка:

Fatal error: Using $this when not in object context in /var/www/html/lib/query.php on line 12

+0

sql = new mysqli ($ this-> dbhost, $ this-> dbuser, $ this-> dbpass, $ this-> dbname); } } класс запрос расширяет базу данных { общественной статической функции GetStudentDetail() { $ запрос = $ this-> sql-> запрос ("SELECT * FROM пользователя"); $ row = $ query-> fetch_assoc(); return $ row; } } var_dump (query :: GetStudentDetail()); ?> –

+0

, пожалуйста, добавьте это –

+0

Я не понимаю, пожалуйста, пожалуйста, пожалуйста, –

ответ

6

Проблема заключается в том, что вы используете статический метод для доступа к нестатической переменной.
Это потребует несколько изменений, если вам необходимо использовать все в статическом вызове
легче исправить это экземпляр объекта и отбросить статические вызовы, такие как: -

$query = new query(); <-- this will instantiate an object to $query and 
         <-- your class constructor will assign mysql connection 
         <-- to variable $sql 

// then 
$query->GetSt(); 

И в объявлении класса: -

?
class query extends db 
{ 
    public function GetSt() <-- remove the static