[英]Php create class function to retrieve data from table
我是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;
我得到了带有“未定义属性”消息的输出结果,创建函数以检索用户信息的正确方法是什么? 谢谢。
也许吧?
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
来管理数据库中的数据。
mysql_fetch_array返回数组,而不是对象。 $ user ['user_email']应该可以工作。
通常,正如您提到的OOP一样,我会说您的代码正在使用类,但不是OOP(如果我正确理解了您将如何构造它的话)。 您要做的只是将过程代码包装到一个类中。 使用OOP,您需要以一种具有独立对象的方式来构造代码,因此创建包含各种实用程序方法的“ Functions”类通常是一个坏主意。 考虑例如创建用户对象。
对于数据库抽象,我建议检查PDO( http://www.php.net/manual/zh/class.pdo.php )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.