Задать вопрос
@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();
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽