Как я могу открыть соединение с базой данных в классе пользователя, где я могу работать с базой данных? и почему нужно определять встроенные созданные функции в классе DBConnection .. ????
Я создал
в db.php
class DBConnection { protected $mysqli; private $db_host="127.0.0.1"; private $db_name="test"; private $db_username="root"; private $db_password=""; public function __construct() { $this->mysqli=new mysqli($this->db_host,$this->db_username, $this-> db_password,$this->db_name) or die($this->mysqli->error); return $this->mysqli; } public function query($query) // why i need to creat this function { return $this->mysqli->query($query); } public function real_escape_string($str) { return $this->mysqli->real_escape_string(); } function __destruct(){ //Close the Connection $this->mysqli->close(); } } ?>
в User.php
<?php require "db.php"; class User { public function __construct($conn) { $this->mysqli=$conn; } public function addUser($name,$username,$email,$pwd) { $query=" "; $res=$this->mysqli->query($query); //pls chek the query function in DBConnection,what is the need to define query > function in DBConnection ? return $res; } } ?>
в result.php
<?php require "user.php"; $conn=new DBConnection(); if(isset($_POST['submit'])) {
$name = $conn->real_escape_string(trim(strip_tags($_POST['name']))); $username = $conn->real_escape_string(trim(strip_tags($_POST['username']))); $email = $conn->real_escape_string(trim(strip_tags($_POST['email']))); $password = $conn->real_escape_string(trim(strip_tags($_POST['pass'])));
//echo $name."".$username."".$email."".$password; $uObj=new User($conn); $uObj->addUser($name,$username,$email,$password); echo " hi your name is <I>".$name."</I> and your email ID is <I>".$email."</I>"; } ?>
Для вашего класса DBConnection
потребуется дополнительный метод:
public function getLink() { return $this->mysqli; }
Кажется, что ваш оригинальный User
класс был подклассом DBConnection
, потому что свойство mysqli
в DBConnection
protected
а класс User
имеет parent::__construct()
вызов.
Лучше использовать инъекцию зависимостей, поэтому ваш User
класс получит соединение с базой данных через конструктор:
public function __construct(DBConnection $db) { $this->mysqli = $db->getLink(); }
Затем из вашего кода вы можете запускать:
$db = new DBConnection; $uObj = new User($db);