2016-04-09 4 views
0

Я хочу переписать сценарий на объект PHP. Я создал сценарий входа в базу данных (работа с базой данных).Обратитесь к переменной

Проблема возникла, когда вы отправляете запрос в базу данных, которая проверяет, существует ли пользователь.

<?php 
//DANE DO LOGOWANIA DO BD 
define("DB_HOST", 'localhost'); 
define("DB_USER", 'michal'); 
define("DB_PASSWORD", ''); 
define("DB_DATABSE", 'kurs_php'); 
?> 

<?php 
//PLIK LOGOWANIA DO BD I SPRAWDZANIA POLACZENIA Z BD 
class dbConnect { 
    function __construct() { 
     require_once 'config.php'; 
     $db_mysqli = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABSE); 
     //$db_mysqli->query('SET NAMES utf8'); 
     if (!$db_mysqli) { 
      die('Błąd połączenia (' . mysqli_connect_errno() . ') ' 
       . mysqli_connect_error()); 
     } else { 
      echo '<font size="2px" color="red">Info: Połączono z bazą danych.</font><br />'; 
     } 
    } 
    public function CloseDb() { 
     mysqli_close(); 
    } 
} 
?> 

<?php 
// KLASA Z FUNKCJAMI LOGOWANIE UŻYTKOWNIKA 
class Functions { 

    function __construct() { 

     // connecting to database 
     $db_mysqli = new dbConnect(); 

    } 
    function __destruct() { 

    } 

    public function Login($login, $hasloSha1) { 
     $result = $db_mysqli->prepare("SELECT haslo FROM uzytkownicy WHERE login=? AND haslo=?"); 
     $result->bind_param('ss', $login, $hasloSha1); 
     $result->execute(); 
     $result->store_result(); 
     $row = mysqli_fetch_assoc($result); 
     $kodAktywowany = $row['kod']; 

//sprawdzenie czy taki uzytkownik istnieje 
     if ($result->num_rows == 1) { 
      $_SESSION['logowanie'] = $login; 
      return TRUE; 
     } else { 
      return FALSE; 
     } 
    } 

} 
?> 

enter image description here

+0

Ваша проблема называется «Variable Scope». Ваша переменная '$ db_mysqli' определена в конструкторе, но не передана или не доступна для функции' login'. Сделайте переменную переменной класса. '$ This-> db_mysqli' –

ответ

0

Declare $ db_mysqli; как переменную класса и получить доступ к ней с помощью $ this-> db_mysqli;

<?php 
     //DANE DO LOGOWANIA DO BD 
     define("DB_HOST", 'localhost'); 
     define("DB_USER", 'michal'); 
     define("DB_PASSWORD", ''); 
     define("DB_DATABSE", 'kurs_php'); 
     ?> 

     <?php 
     //PLIK LOGOWANIA DO BD I SPRAWDZANIA POLACZENIA Z BD 
     class dbConnect { 
      function __construct() { 
       require_once 'config.php'; 
       $db_mysqli = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABSE); 
       //$db_mysqli->query('SET NAMES utf8'); 
       if (!$db_mysqli) { 
        die('Błąd połączenia (' . mysqli_connect_errno() . ') ' 
         . mysqli_connect_error()); 
       } else { 
        echo '<font size="2px" color="red">Info: Połączono z bazą danych.</font><br />'; 
       } 
      } 
      public function CloseDb() { 
       mysqli_close(); 
      } 
     } 
     ?> 
     // Declare a class variable to $db_mysqli; 
    <?php 
    // KLASA Z FUNKCJAMI LOGOWANIE UŻYTKOWNIKA 
    class Functions { 
     var $db_mysqli; 
     function __construct() { 

      // connecting to database 
      $this->db_mysqli = new dbConnect(); 

     } 
     function __destruct() { 

     } 

     public function Login($login, $hasloSha1) { 
      $result = $this->db_mysqli->prepare("SELECT haslo FROM uzytkownicy WHERE login=? AND haslo=?"); 
      $result->bind_param('ss', $login, $hasloSha1); 
      $result->execute(); 
      $result->store_result(); 
      $row = mysqli_fetch_assoc($result); 
      $kodAktywowany = $row['kod']; 

    //sprawdzenie czy taki uzytkownik istnieje 
      if ($result->num_rows == 1) { 
       $_SESSION['logowanie'] = $login; 
       return TRUE; 
      } else { 
       return FALSE; 
      } 
     } 

    } 
    ?> 
Смежные вопросы