PHP класс - используйте return в другой функции

1

У меня есть один класс 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;
  }
}
Теги:

1 ответ

2
Лучший ответ

$this->DB_Connect(); возвращает значение. Он не устанавливает для вас переменную. Вам нужно установить переменную в ее возвращаемое значение.

$CONN = $this->DB_Connect();
  • 0
    Большое спасибо, это работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню