Обращение к классу PDO внутри метода другого класса
Кто может подсказать в чем ошибка? Хочу обратиться к классу PDO внутри метода моего класса. Возможно ли это? Связь с БД установил, $pdo = new PDO сделал сначала каждой страницы. Fatal error: Uncaught Error: Call to a member function prepare() on null in W:\domains\ Вот собственно сам код:
public function register(){
$this->login=htmlspecialchars(trim($_POST['login']));
$this->password=md5(mb_strtolower(htmlspecialchars(trim($_POST['password']))));
$this->email=htmlspecialchars(trim($_POST['email']));
//Проверка на зарегестрированного пользователя в БД
$errlog = "SELECT count(*) FROM `users` WHERE login = '$this->login'";
$errmail= "SELECT count(*) FROM `users` WHERE email = '$this->email'";
$result1 = $pdo->prepare($errlog);
$result2 = $pdo->prepare($errmail);
$result1->execute();
$result2->execute();
$number_of_rows1 = $result1->fetchColumn();
$number_of_rows2 = $result2->fetchColumn();
Ответы (1 шт):
Автор решения: Ипатьев
→ Ссылка
Инстанс ПДО надо передавать в конструктор класса и присвоить приватной переменной.
class User {
private $pdo;
public function __construct($pdo) {
$this->pdo = $pdo;
}
public function register(){
$login=trim($_POST['login']);
$password=trim($_POST['password']);
$email=trim($_POST['email']);
//Проверка на зарегестрированного пользователя в БД
$sql = "SELECT count(*) FROM `users` WHERE login = ? or email = ?";
$stmt= $this->pdo->prepare($sql);
$stmt->execute([$login, $email]);
$user = $stmt->fetch();
$number_of_rows1 = $user && $user['login'] == $login;
$number_of_rows2 = $user && $user['email'] == $email;
}
}