поэтому я создаю сайт членства, пока у меня есть только 2 класса, класс для подключения получил базу данных и класс для управления пользователями
вот класс для базы данных:
class dbConnect { protected $db_conn; public $db_host = '127.0.0.1'; public $db_user = 'root'; public $db_pass = ''; public $db_name = 'db'; public function connect() { try { $this->db_conn = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user,$this->db_pass); return $this->db_conn; } catch(PDOException $e) { return $e->getMessage(); } } }
Вот класс пользователей, у которого есть только один метод, я только начал этот проект
class ManageUsers { public $link; function __construct() { $db_connection = new dbConnect(); $this->link = $db_connection->connect(); return $this->link; } function registerUsers($username,$email,$password,$ip_adress,$date) { $query = $this->link->prepare("INSERT INTO `users` (username,email,password,ip_adress,date_joined) VALUES(?,?,?,?,?)"); $values = [$username,$email,$password,$ip_adress,$date]; $query->execute($values); $confirm = $query->rowCount(); return $confirm; } }
Теперь я просто запускаю тестовый объект, чтобы узнать, все ли это работает
$test = new ManageUsers(); echo $test->registerUsers('bob','a@a.com','lol','127.0.0.1','2012');
теперь я получаю сообщение об ошибке, которое я вызываю для инструкции подготовки к не-объекту. Честно говоря, я не понимаю, так как я создаю объект в методе построения. ну любые советы помогают Спасибо!
Я думаю, что объект PDO недопустим, потому что вы используете двойные кавычки с методом / свойством объекта, в этом случае вам нужно использовать сложную строчную нотацию ( "{$object->property}"
) или присоединиться к строкам .
(точка)
о php-строках
$this->db_conn = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user,$this->db_pass);
изменить на:
$this->db_conn = new PDO("mysql:host={$this->db_host};dbname={$this->db_name}", $this->db_user,$this->db_pass);
У меня есть действительно похожий сценарий от вас, вот он
class dbConnect { protected $db_conn; public $db_host = '127.0.0.1'; public $db_user = 'root'; public $db_pass = 'roadmin'; public $db_name = 'todo'; public function connect() { try { $this->db_conn = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user,$this->db_pass); return $this->db_conn; } catch(PDOException $e) { return $e->getMessage(); } } } class ManageUsers { public $link; function __construct() { $db_connection = new dbConnect(); $this->link = $db_connection->connect(); return $this->link; } function registerUsers($username,$email,$password,$ip_adress,$date) { $query = $this->link->prepare("INSERT INTO `users` (username,email, password, ip_adress, date_joined) VALUES(?,?,?,?,?)"); $values = [$username,$email,$password,$ip_adress,$date]; $query->execute($values); $confirm = $query->rowCount(); return $confirm; } function loginUser() { } } $test = new ManageUsers(); echo $test->registerUsers('bob','a@a.com','lol','127.0.0.1','2012');