Задать вопрос
@Banan44
Full Stack

Проблемы с PDO в ООП, что делать?

<?php

/* Не работает */

class Database {
	private $mysqli;

	public function __construct(){
		$dsn = "mysql:host=localhost;dbname=banan165_database";
		$this->mysqli = new PDO($dsn, "root", "")
	}
	public function query($sql){
		$this->mysqli->query($sql)
	}
}

$db = new Database();
$db->query("INSERT INTO categories(name) VALUES('PDO')");

/* Работает */

$dsn = "mysql:host=localhost;dbname=banan165_database";
$mysqli = new PDO($dsn, "root", "");
$mysqli->query("INSERT INTO categories(name) VALUES ('PDO')");

?>

Почему с ООП не работает? Строка где name = PDO не добавляется с использованием ООП, а без ООП работает.
  • Вопрос задан
  • 206 просмотров
Подписаться 2 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Решение:
class Database {
  private $mysqli;

  public function __construct(){
    $dsn = "mysql:host=localhost;dbname=banan165_database";
    $this->mysqli = new PDO($dsn, "root", "");
  }
  public function query($sql){
   return $this->mysqli->query($sql);
  }
}

$db = new Database();
$db->query("INSERT INTO categories(name) VALUES('PDO')");


Но если правильно - так не делается.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Потому что это бессмысленный "ООП". PDO - это уже класс, и добавлять к нему бессмысленный Database нет ни малейшей причины. Тем более зачем-то называя переменную mysqli, делая код не только бессмысмленным, но и запутанным.

Свой класс надо писать, когда он что-то добавляет к существующему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы