2014-03-06 170 views
-2

當我定義函數時,出現call to undefined function錯誤。下面是代碼:調用未定義的函數錯誤

foreach($db->query("SELECT * FROM 'members' WHERE username = '$user'") as $row) { 
    echo "Rank: ".get_rank_tag($user)."<br>"; 
} 

下面是get_rank_tag()功能

include('password.php'); 

class User extends Password { 
    private $_db; 

    function __construct($db) { 
    parent::__construct(); 
    $this->_db = $db; 
    } 

    public function get_rank_tag($user){ 
    try { 
     $stmt = $this->_db->prepare('SELECT rank FROM members WHERE username = $user '); 
     $stmt->execute(); 
     $row = $stmt->fetch(); 
     if($row['rank']==0){return "<span class='label label-default'>Default</span>";} 
     elseif($row['rank']==1){return "<span class='label label-success'>VIP</span>";} 
     elseif($row['rank']==2){return "<span class='label label-success'>MVP</span>";} 
     elseif($row['rank']==3){return "<span class='label label-success'>Elite</span>";} 
     elseif($row['rank']==4){return "<span class='label label-success'>Master</span>";} 
     elseif($row['rank']==5){return "<span class='label label-success'>Champion</span>";} 
     elseif($row['rank']==6){return "<span class='label label-primary'>JM</span>";} 
     elseif($row['rank']==7){return "<span class='label label-primary'>Trusted</span>";} 
     elseif($row['rank']==8){return "<span class='label label-info'>GM</span>";} 
     elseif($row['rank']==9){return "<span class='label label-info'>GM+</span>";} 
     elseif($row['rank']==10){return "<span class='label label-warning'>Admin</span>";} 
     elseif($row['rank']==11){return "<span class='label label-danger'>Owner</span>";} 
    } catch(PDOException $e) { 
     echo ''; 
    } 
    } 

} 

類我有點初學者到PHP的,所以請大家多多包涵。

+0

在哪裏調用未定義函數? – Chitowns24

+1

...以及未定義函數的名稱是什麼?始終顯示完整的錯誤消息! –

+0

@ Chitowns24當我說'「.get_rank_tag($ user)。」' – ryr11

回答

0

你確定你有一個User類的實例嗎?確保你已經實例化了這個類,因爲PHP將無法識別你的函數。

+0

我用過'include'classes/user.php';' – ryr11

+0

你只「包含」User類。你需要有'$ user_class = new User($ db);'才能使用你需要的功能。 – Nuit

0

你必須創建類的新實例,然後才能開始調用其內部功能,否則它不知道到哪裏尋找功能

$newUser = new User($db); 
$dataHold = $newUser->get_rank_tag($user); 

然後你就可以代替使用$dataHold,你正在迴應排名。

+0

現在我得到這個錯誤: **致命錯誤:**在**/Applications/AMPPS/www/classes/user.php **線上調用一個非對象的成員函數prepare() ** 71 ** – ryr11

+0

是的,你需要添加一個數據庫到這個調用。所以班級知道你使用的是什麼數據庫。你在什麼框架? – Chitowns24

+0

現在我有''。$ newUser-> get_rank_tag($ user)。'''回聲'的地方。也沒有框架,引導我猜... – ryr11

相關問題