0

私はphpOOPの新しい学習者です。登録ユーザー情報を取得するためのクラス関数を作成したいのですが、どうすればよいですか?

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;

'undefined property'メッセージで何も出力されませんでしたが、ユーザーの情報を取得する関数を作成する適切な方法は何ですか?ありがとう。

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」クラスを作成することは一般的に悪い考えです。たとえば、代わりにUserオブジェクトを作成することを検討してください。

データベースの抽象化については、PDO( http://www.php.net/manual/en/class.pdo.php )を確認することをお勧めします。

于 2013-03-23T18:52:42.920 に答える