PHP使用Object来检索DB数据

时间:2016-08-25 08:12:19

标签: php oop pdo

我想知道是否有人可以帮助我。我是PHP OOP的新手,想要使用对象的一些指导。

我正在创建一个登录脚本,下面提到的函数都来自类文件。

Class USER{

public function userLogin($username,$password)
{   
    $statusY = "Y";

    $stmt  = $this->connection->prepare("SELECT * FROM tbl_users WHERE user_name=:userName  LIMIT 1");
    $stmt ->execute(array(":userName"=>$username));
    $row = $stmt ->fetch(PDO::FETCH_ASSOC);

        if($stmt->rowCount() == 1)
        {

        $this->_user = $row; // Assign user details

        $_SESSION['userSession'] = $row['user_id'];

        }
}


public function getUser()
{
    return $this->_user;
}

好的,我有getUser()函数,然后分配$ this-> _user = $ row,这样我就可以从数据库中检索用户信息。现在我想从中做出一些事情,但不知道如何去做。

我如何在同一类中的另一个函数中调用$ row [' user_id']?

所以基本上

public function test()
{
$user_id = $this->_user(user_id);
$username = $this->_user(username);
}

我该如何正确地做到这一点?

此外,如果我想在用户主页等页面中调用该信息。

 $user_home = new USER();
 $userID = $user_home->getUser(user_id);

 echo $userID;

如果有人能给我一些关于如何向前推进的指导,我将不胜感激。感谢

2 个答案:

答案 0 :(得分:1)

让我们从关于方法和类命名的基本陈述开始:我不会重复这个课程'主题一遍又一遍(在上面的例子"用户"),而只是从方法名称中删除它:

class User 
{
  private $info= array();
  private $authenticated= FALSE;

  public function login ($username, $password)
  {
    // do your stuff 
    ...
    // set in case that user name and password have been found
    $this->info= $row;
    $this->authenticated= TRUE;
  }

  public function isAuthenticated () 
  {
    return $this->authenticated;
  }

  /**
  * returns all info from a given user
  */
  public function get ()
  {
    return $this->info;
  }

  /**
  * returns a single field
  */
  public function getField ($fieldName) {
    if (isset($this->info[$fieldName]) {
      return $this->info[$fieldName];
    } else {
      return FALSE;
    }
  }
}

使用getField(FIELD)方法仅返回用户行的单个元素,并get()返回所有值。

$user= new User();
$user->login ($username, $password);
if ($user->isAuthenticated()) {
  $home= $user->getField('home');
  print sprintf('%s\'s home is %s', $username, $home);
}

建议为用户数据库表创建一个类(即class UserModel),另一个用于处理使用class UserAuth类的用户函数(即UserModel) 。这样可以更轻松地交换基础身份验证源。

答案 1 :(得分:0)

<div ng-controller="DropdownCtrl as vm">
   <select name="singleSelect" ng-model="vm.data" 
      ng-click="vm.loadTenantList()">
     <option ng-repeat="tenant in vm.tenants" >{{tenant.name}}</option>
   </select><br>
</div>