PHP PDO: авто-деконструкция объекта после вызова функции - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть ситуация, когда объект, созданный в верхней позиции в моем файле 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();

Ошибка:

Примечание: неопределенный индекс: username_db в C: \ wamp64 \ www \ NewKali \ includes \ user.inc.php в строке 57

Я не понимаю, где вызывается функция __destruct или почему она вызывается! Надеюсь, что вы можете мне помочь.

Спасибо, что уделили время!

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

переименовать столбец username_db в столбец, который фактически существует на сервере.

0 голосов
/ 18 ноября 2018

РЕДАКТИРОВАНИЕ ВЛАДЕЛЬЦА:

Я изменил $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>";
    }
}
0 голосов
/ 18 ноября 2018

Вы устанавливаете $userOBJ = new User дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...