这个PHP面向对象的代码是否正确?

时间:2016-07-09 11:13:20

标签: php mysql oop

我正在学习PHP面向对象,我想从数据库中查询一些数据并将它们显示在一个页面中。基本上我有2个文件,如下所示:

login.php
dashboard.php

在我的login.php,我对此进行了编码,以便在我的网站中为用户签名:

<?php 
  class User{
    private $db;
    public function __construct(){
        $this->db = new Connection();
        $this->db = $this->db->dbConnect();
    }
    public function Login($name, $pass){
      if(!empty($name)&&!empty($pass)){
        $st = $this->db->prepare("select * from admins where username=? and password=?");
        $st->bindParam(1,$name);
        $st->bindParam(2,$pass);
        $st->execute();
        if($st->rowCount() == 1){
          header('Location: maint/dashboard.php');
          $_SESSION["admin_username"] = $name;
        } else {
          echo "No user!";
        }
      }
    }
  }
?>

正如您所看到的,我在第16行设置了一个名为$_SESSION["admin_username"]的会话变量。这样我就可以通过它从db中检索数据..

接下来,我把它作为我的admin.class.php,它是这样的:

<?php 
  class Admin{
    private $db;
    public function __construct(){
      $this->db = new Connection();
      $this->db = $this->db->dbConnect();
      $inf = $this->db->prepare("select * from admins where username = ".$_SESSION['admin_username']."");
      $inf->execute();
      if($st->rowCount() == 1){
        while ($record = mysql_fetch_array($st)) {
        $this->username[] = $record['username'];
      }
    }
    public function get_name() {
      return $this->username[];
    }
  }
?>

然后我将此代码添加到dashboard.php

<?php 
  $adm = new Admin();
  echo $adm->get_name();
?>

它应该从数据库获取用户名并在页面上显示,但每当我运行此代码时,我都会收到此错误:

解析错误:语法错误,意外情况&#39;公共&#39;第16行的admin.class.php中的(T_PUBLIC)

那么出了什么问题?我认为他们编码的方式肯定存在问题。通过oop中的会话变量从数据库中检索数据的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

你错过了__construct中的花括号。在admin.class.php中尝试这个:)

<?php 
  class Admin{
    private $db;
    public function __construct(){
      $this->db = new Connection();
      $this->db = $this->db->dbConnect();
      $inf = $this->db->prepare("select * from admins where username = ".$_SESSION['admin_username']."");
      $inf->execute();
      if($st->rowCount() == 1){
        while ($record = mysql_fetch_array($st)) {
        $this->username[] = $record['username'];
      }
    }
  }
  public function get_name() {
    return $this->username[];
  }
}
?>