Есть форма которая принимает логин и пароль, я его обрабатываю , все работает хорошо, но при попытке через дочерний класс добавить данные в БД, у меня вызывается ошибка,
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 тоже самая ошибка(