@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 не добавляется с использованием ООП, а без ООП работает.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
@maksim92
Решение:
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
Потому что это бессмысленный "ООП". PDO - это уже класс, и добавлять к нему бессмысленный Database нет ни малейшей причины. Тем более зачем-то называя переменную mysqli, делая код не только бессмысмленным, но и запутанным.

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

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

Войти через центр авторизации
Похожие вопросы
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.
Living Core Казань
от 50 000 руб.