PHP PDO:调用函数后对象自动解构

时间:2018-11-17 23:28:51

标签: php jquery oop object pdo

我遇到的情况是,在我的PHP文件的顶部位置创建的对象在到达该文件上的PHP代码末尾之前就被解构了

File1.php

//* This is all in the same PHP file *//

<?php
    session_start();
    include 'includes/user.inc.php';

    $userOBJ = new User; //Declaring the object
?>

//*** jQuery and HTML code here ***//

<?php
    if($userOBJ->isAdmin($_SESSION['session_u-name']) == true){
        AdminControl();
    } 

    // This code gets done without any problem

    function AdminControl(){
        echo "<a id='dbControlAdmin' onclick='changeDisplayAdm()'>Database 
        Control</a>";
    }
?>

//*** More HTML and jQuery Code here ***//

<?php
   $userOBJ->getUsersName(); //The object is no longer available when reaching this code
?>

在对象类中,我具有以下函数作为解构函数:

public function __destruct(){
        echo "<b style='color: red;'>Status:</b> Database Connection->Disconnect";
    }

这是通过对象调用的函数:

    public function isAdmin($user){
    $userToGet = $user;

    $stmt = $this->Connect()->prepare("SELECT admin_db FROM user_secure WHERE username_db=?");
    $stmt->execute([$userToGet]);
    foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
        $value = $row["admin_db"];
            if($value == 1){
                return true;
            } else {
                return false;
            }
    }
}

public function getUsersName(){
    $stmt = $this->Connect()->prepare("SELECT username_db FROM user_secure");
    $stmt->execute();

    while($row = $stmt->fetchAll(PDO::FETCH_ASSOC)){
            echo "<option value='" . $row['username_db'] . "'>" . $row['username_db'] . "</option>";
        }
}

}

当我运行网站时,此消息会在左上角显示

  

状态:数据库连接->断开连接

该对象在__destruct函数中具有的指示,网站部署了一个PHP错误,该函数的最后一个调用是:$userOBJ->getUsersName();

错误是:

  

注意:未定义的索引:第57行的C:\ wamp64 \ www \ NewKali \ includes \ user.inc.php中的username_db

我不知道__destruct函数的调用位置或调用原因!希望你能帮助我。

谢谢您的时间!

3 个答案:

答案 0 :(得分:0)

将列username_db重命名为服务器上实际存在的列。

答案 1 :(得分:0)

所有者编辑:

我将$row['username_db']更改为$row["username_db"]并成功...(还更改了其他一些内容)

我在函数中的最终代码是:

public function getUsersName(){
    $stmt = $this->Connect()->prepare("SELECT * FROM user_secure");
    $stmt->execute();

    foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
        $value = $row["username_db"];
        echo "<option value='" . $value . "'>" . $value . "</option>";
    }
}

答案 2 :(得分:-1)

您两次设置$userOBJ = new User