我正在学习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中的会话变量从数据库中检索数据的正确方法是什么?
答案 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[];
}
}
?>