@Sergey1728
Пытаюсь научиться программировать

Не могу вывести данные из mysql через объекты?

Всем привет. Не ругайте, только учусь.
Нужно вывести данные из mysql через объекты, каждая строка в БД должна стать отдельным объектом.
Не понимаю где именно осуществлять подключение к БД и где делать запрос, внутри класса или же подключение к БД должно быть отдельным классом?
Возможно ли сделать одно подключение к БД для всех будущих объектов сразу?

Если кто-то поделиться примером кода, буду очень благодарен.

Просто подключиться и вывести данные умею:
$mysqli = @new mysqli('host', 'un', 'pass', 'db');
$mysqli->set_charset('utf8');
if (mysqli_connect_errno()) {
echo "Подключение невозможно: ".mysqli_connect_error();
}
$result_set = $mysqli->query('SELECT * FROM news');
while ($row = $result_set->fetch_assoc()) {
print_r($row);
echo "";
}
$result_set->close();
$mysqli->close();
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
flapflapjack
@flapflapjack
на треть я прав
Сергей
спасибо, а возможно вы сможете подсказать тоже самое но уже в ООП?


class DB {
private $host;
private $user;
private $pass;
private $db;
private $connection;
public function __construct($host,$user,$pass,$db)
{
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->db=$db;
}

public function connect()
{
$this->connection = @new mysqli($this->host,$this->user,$this->pass,$this->db);
$this->connection->set_charset('utf8');
return $this->connection;
}
}


class News {
private $connection;
public function __construct($connection)
{
$this->connection=$connection;
}
public function get_news()
{
$result_set = $this->connection->query('SELECT * FROM news');
return $result_set->fetch_object();
}
}


$db=new DB('host', 'un', 'pass', 'db');
$connection=$db->connect();
$news=new News($connection);

$news_list=$news->get_news();


var_dump($news_list);//операции с объектом, то бишь вывод и т.д. и всякие foreach()


Изначально может показаться что кода стало больше, но при росте проекта это будет наоборот - короче.

Вы так же можете использовать и процедурный стиль, но в каждую функцию придется передавать $connection, в ООП же - только классу.

Кроме того в процедурном стиле у вас будет куча таких функций:
get_news();
get_user_id();
get_id_by_email();
get_user_id_by_news_id(); и т.д.

При ООП же всё структурируется согласно классам,

$news->get_user();
$user->get_news();

и т.д.
Это не тема для тостера, это надо читать хотя бы про MVC
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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