У меня есть один класс PHP с двумя функциями DB_Connect() и LogIn(). Чтобы использовать LogIn(), мне сначала нужно запустить DB_Connect и получить возвращаемое значение $ CONN. Я делаю это с помощью $this->DB_Connect();
но когда я запускаю код, я получаю:
Примечание. Неопределенная переменная: CONN в C:\XAMPP\htdocs\core\Admin.class.php в строке 39
Неустранимая ошибка: вызовите функцию-член prepare() на null в C:\XAMPP\htdocs\core\Admin.class.php в строке 39
protected function DB_Connect()
{
$ROOT = dirname(__DIR__);
include $ROOT."../core/sql.php";
try {
$CONN = new PDO("mysql:host=$ServerName; dbname=$DataBase", $Username, $Password);
$CONN->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$CONN->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
return $CONN;
}
public function LogIn()
{
if($_SERVER["REQUEST_METHOD"] === "POST") {
$Username = $_POST["Username"];
$Password = $_POST["Password"];
$this->DB_Connect();
try {
$SQL = "SELECT Password FROM Admins WHERE Username = :Username";
$SQL = $CONN->prepare($SQL);
$SQL->execute(array('Username' => $Username));
$CountRows = $SQL->rowCount();
$Result = $SQL->fetch(PDO::FETCH_ASSOC);
$PasswordCheck = $Result["Password"];
if($CountRows === "1" && password_verify($Password, $PasswordCheck)) {
$_SESSION["LoginUser"] = $Username;
$CONN = null;
header("location: home.php");
exit();
} else {
$Status = '<div class="alert alert-danger" role="alert">You have entered wrong data!</div>';
}
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
}
$CONN = null;
if(isset($Status)) {
return $Status;
}
}
$this->DB_Connect();
возвращает значение. Он не устанавливает для вас переменную. Вам нужно установить переменную в ее возвращаемое значение.
$CONN = $this->DB_Connect();