我遇到的情况是,在我的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函数的调用位置或调用原因!希望你能帮助我。
谢谢您的时间!
答案 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
。