2013-03-23 61 views
0

我是PHP OOP的新學習者,我想創建一個類函數來獲取註冊用戶信息,我該怎麼做?PHP創建類函數從表中檢索數據

class Functions{ 

    public static function getUserInfo($user_id){ 
     $sql = mysql_query("SELECT * FROM members WHERE user_id='".$user_id."'"); 
     $rows = mysql_fetch_array($sql); 

     if(mysql_num_rows($sql) >= 1){ 
      return $rows; 
     } 
    } 
} 

呼應用戶的信息:

$user = new Functions(); 
$user->getUserInfo($_SESSION['user_id']); 

echo $user->user_email; 

我得到了nuthing與「未定義的屬性」消息輸出,什麼是創建函數來獲取用戶的信息的正確方法?謝謝。

+2

除非必須,否則不要使用'mysql_ *'函數系列。它們已經過時。改用mysqli或PDO。唯一的例外是如果你的PHP安裝不支持任何新的選擇。 – fredrik 2013-03-23 18:34:38

回答

1

也許呢?

class Functions{ 

    public static function getUserInfo($user_id){ 
     if(empty($user_id)) { 
      return null; 
     } 
     // connect to db 
     $sql = mysql_query("SELECT * FROM members WHERE user_id='".$user_id."' LIMIT 1"); 

     if(mysql_num_rows($sql) > 0){ 
       $row = mysql_fetch_array($sql, MYSQL_ASSOC); 
       // close connection to db 
       return $row; 
     } 
     // close connection to db 
     return null; 
    } 
} 

$userID = !empty($_SESSION['user_id']) ? (int)$_SESSION['user_id'] : null; 
$user = Functions::getUserInfo($userID); 
if($user !== null) { 
    echo $user['user_email']; 
} 

這是ONY例如,使用mysqli_*PDO在數據庫來管理數據。

+0

我仍然看不到輸出,我怎麼能回顯類似'$ userData-> user_email'的信息? – conmen 2013-03-23 18:47:50

+0

我現在可以看到數據,但我仍然懷疑如何使用'$ userData-> user_email'這樣的東西?輸出結果? – conmen 2013-03-23 18:56:28

+0

我編輯了你的例子。 – mkjasinski 2013-03-23 19:08:23

0

mysql_fetch_array返回數組,而不是對象。 $ user ['user_email']應該工作。

一般來說,正如你提到的OOP,我會說你的代碼是使用類,但它不是OOP(如果我正確理解你將如何構造它)。你所做的僅僅是將程序代碼包裝到一個類中。 使用OOP時,需要構造代碼,使其具有自包含的對象,因此創建包含各種實用方法的「Functions」類通常是一個糟糕的主意。考慮例如改爲創建User對象。

對於數據庫抽象,我建議檢查PDO(http://www.php.net/manual/en/class.pdo.php)。

+0

謝謝,我會花時間保持練習。 – conmen 2013-03-23 19:04:14