2013-03-31 27 views
5

nesne bağlamında ben bu sınıf var değilken $ kullanmak, bu kullanarak mysql veritabanı php/mysqli bağlanmak için:Önemli hata:

require_once 'classes/AuthDB.class.php'; 

session_start(); 

$this->_db = new AuthDB(); // error For This LINE 
$query = "SELECT Id, user_salt, password, is_active, is_verified FROM Users where email = ?"; 
$stmt = $this->_db->prepare($query); 

     //bind parameters 
     $stmt->bind_param("s", $email); 

     //execute statements 
     if ($stmt->execute()) { 
      //bind result columnts 
      $stmt->bind_result($id, $salt, $pass, $active, $ver); 

      //fetch first row of results 
      $stmt->fetch(); 

      echo $id; 


     } 
: şimdi

class AuthDB { 
    private $_db; 

    public function __construct() { 
     $this->_db = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME) 
     or die("Problem connect to db. Error: ". mysqli_error()); 
    } 

    public function __destruct() { 
     $this->_db->close(); 
     unset($this->_db); 
    } 
} 

i liste kullanıcı için herhangi bir sayfaya sahip

şimdi, ben bu hatayı bakın:

Fatal error: Using $this when not in object context in LINE 6 

Nasıl bu hatayı düzeltmek için ?!

+2

bir sınıfa – bizzehdee

+1

'$ this' dışında kullanamaz yüzden bu sadece, sınıf tanımının kendi kendine içinde var $ sen sınıfını belirtmektedir ** içeride ** bir sınıf. Bunun dışında hiçbir anlamı yoktur. – elclanrs

cevap

6

Hatada olduğu gibi, sınıf tanımının dışında $this kullanamazsınız. sınıf tanımının dışında $_db kullanmak için öncelikle o public yerine private olun:

public $_db

Sonra

, bu kodu kullanın:

$authDb = new AuthDb(); 
$authDb->_db->prepare($query); // rest of code is the same 

- Sen neyin $this anlamak zorunda

aslında demektir. Bir sınıf tanımının içinde kullanıldığında, o sınıfın bir nesnesine başvurmak için $this kullanılır. Yani, içinde foo bir işleviniz varsa ve foo içinden $_db erişiminiz olması gerekiyorsa, 'un ait olduğu aynı nesneden,olmasını istediğiniz PHP'ye $this kullanırsınız.

Bu StackOverflow soruyu okumak isteyebilirsiniz: PHP: self vs $this

+0

Teşekkürler faydalı cevap! "$ $ $ $ $ $ $ $ $' 'sınıfımda $ $ $ $ $ $' '$ $ $ $ $' $ $ 'ile değiştirin ve benim hatam giderildi, hatam giderildi, ama yeni hata görüyorum:' Fatal error: üye fonksiyonunu çağırmak bind_param() bir nesne olmayan 'bu hatayı düzeltmek için nasıl? benim problemim nerede? –

+0

@ B.BKing, yeni bir soru açmak isteyebilirsiniz, ancak bunun nedeni, $ $ sorgunuzun geçersiz olmasıdır. – Tushar

+0

oh yeap! Teşekkürler. –

İlgili konular