Задать вопрос
@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 не добавляется с использованием ООП, а без ООП работает.
  • Вопрос задан
  • 202 просмотра
Подписаться 2 Простой 5 комментариев
Решения вопроса 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, делая код не только бессмысмленным, но и запутанным.

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

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

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