0

我是 php OOP 的新手,我想创建一个类函数来获取注册用户信息,我该怎么做?

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 输出,创建检索用户信息的函数的正确方法是什么?谢谢。

4

2 回答 2

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'];
}

这是一个例子,使用mysqli_*PDO管理数据库中的数据。

于 2013-03-23T18:33:36.433 回答
0

mysql_fetch_array 返回数组,而不是对象。$user['user_email'] 应该可以工作。

一般来说,正如您提到的 OOP 我会说您的代码正在使用类,但它不是 OOP(如果我正确理解您将如何构建它)。您所做的只是将过程代码包装到一个类中。使用 OOP,您需要以具有自包含对象的方式构建代码,因此创建包含各种实用方法的“Functions”类通常是一个坏主意。考虑例如创建用户对象。

对于数据库抽象,我建议检查 PDO(http://www.php.net/manual/en/class.pdo.php)。

于 2013-03-23T18:52:42.920 回答