[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП проблема в наследовании
linux_user_net
Добрый вечер, я начинающий PHP программист прошу у Вас помощи.
Есть форма которая принимает логин и пароль, я его обрабатываю , все работает хорошо, но при попытке через дочерний класс добавить данные в БД, у меня вызывается ошибка,
tal error: Uncaught Error: Call to a member function prepare() on null
Проверял функцию mysqli prepare(), но все же не смог понять.
Пожалуйста, подскажите мне где здесь ошибка?



index.php в котором создаются объекты, а также дочерний класс от родительского user

<!DOCTYPE html>
<
html>
<
head>
<
title>Работа с PHP ООП</title>
</
head>
<
body>
<
center>
<
fieldset>
<
legend>Регистрация</legend>

<?php
include('index2.php');
include('user.php');



class user_db extends user{
PUBLIC $table = 'user';
PUBLIC function insert_user() {
$res = $this->mysqli->prepare("INSERT INTO {$this->table} (login,pass) VALUES (?,?)");
$res->bind_param('ss',$this->par1,$this->par2);
!(
$res->execute()) ? : header("location: ".$_SERVER['PHP_SELF']);
}
}




if(isset($_POST['sub'])) {
$user = new user($_POST['login'],$_POST['pass']);
$prov = $user->prov_str();
if(is_array($prov) && !empty($prov)) {
$user_db = new user_db($_POST['login'],$_POST['pass']);
echo $user_db->insert_user();
} else {
echo 'Пожалуйста, заполните поля<br/>';
}

}

?>
<form action=<?php echo $_SERVER['PHP_SELF']; ?> method="post">
<
p>Логин<br/>
<
input type="text" name="login"/>
</
p>
<
p>Пароль<br/>
<
input type="password" name="pass"/>
</
p>
<
p>
<
input type="submit" name="sub" value="Войти"/>
</
p>
</
form>
<
a href="index2.php">Регистрация</a>
</
fieldset>
</
center>
</
body>
</
html>



user.php которая обрабатывает поля

<?php

class
user{
PROTECTED $par1, $par2;
PUBLIC $str = array('?',';','"','^','%','$','#','*','>','<');

PUBLIC function __construct($var1,$var2) {
$this->par1 = self::prov_said($var1);
$this->par2 = self::prov_said($var2);
}

PUBLIC function prov_said($var) {
return str_replace($this->str,'',strip_tags(trim(filter_var($var,FILTER_SANITIZE_STRING))));
}

PUBLIC function prov_str() {
return (empty($this->par1) || empty($this->par2)) ? false : array('login'=>$this->par1,'pass'=>$this->par2);
}
}

?>


index2.php соединение с БД

<?php
define('HOST','localhost');
define('USER','user');
define('PASS','12345');
define('BASE','bd1');

class connect {
PUBLIC $mysqli;
public function __construct($h,$u,$p,$d) {
$this->mysqli = new mysqli($h,$u,$p,$d);
(
$this->mysqli)?:die('Ошибка подключения<br/>');
return $this->mysqli;
}
}

$connect = new connect(HOST,USER,PASS,BASE);

?>



Думал ошибка в свойстве mysqli , потом поставил спецификатор доступа PUBLIC тоже самая ошибка(
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.