Я хочу переписать сценарий на объект 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;
}
}
}
?>
Ваша проблема называется «Variable Scope». Ваша переменная '$ db_mysqli' определена в конструкторе, но не передана или не доступна для функции' login'. Сделайте переменную переменной класса. '$ This-> db_mysqli' –