2017-01-10 26 views
-1

所以我有這樣的功能,數據庫類:

public function sql($sql) { 
    $result = $this->connection->query($sql); 
    return $result; 
} 

但它返回的錯誤:

Fatal error: Uncaught Error: Using $this when not in object context

但我不明白爲什麼我會遇到這個錯誤,我在互聯網上看過人,但似乎沒有人有這個確切的問題。

這是我的全部數據庫類:

namespace Core; 

require_once ("../config.php"); 

class DB { 

    public $connection; 
    public function __construct() { 
     $this->connection(); 
    } 

    public function connection() { 
     $this->connection = new \mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

     if ($this->connection->connect_error) { 
      die("Database fout"); 
     } 
    } 

    public function sql($sql) { 
     $result = $this->connection->query($sql); 
     return $result; 
    } 
} 

然後我把它像這樣:

DB::sql('SELECT * FROM `users`'); 

但後來我得到的錯誤。 :/

+2

感嘆。什麼'DB :: sql'表達?它是一個類方法的_static_調用,它不__使用一個對象... – arkascha

+0

噢......那有點愚蠢:/ –

+0

使用'$ bd = new DB(); $ bd-> sql('SELECT * FROM '用戶'');' –

回答

1
DB::sql('SELECT * FROM `users`'); 

這是靜態函數調用方法和靜態函數不能使用$this 您需要根據您的評論你的類應該像像

$database = new DB(); 
$sql = $database->sql('SELECT * FROM `users`') 

調用在這種情況下,

<?php 
namespace Core; 

require_once ("../config.php"); 

class DB 
{ 
    public static $connection; 

    public static function connection() 
    { 
     self::$connection = new \mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
     if (self::$connection->connect_error) { 
      die("Database fout"); 
     } 
    } 
    public static function sql($sql) 
    { 
     $result = self::$connection->query($sql); 
     return $result; 
    } 
} 
DB::connection(); 
+0

好的,謝謝。但是如果我想像'DB :: sql'那樣調用我的函數,我該如何修改我的DB類呢? –

相關問題