Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391

ООП и mysqli

09.09.2014, 01:17. Показов 2742. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите, что я делаю не так?
Код db.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class db {
    public function __construct($dbhost, $dbuser, $dbpass, $charset){
        $link = new mysqli ($dbhost, $dbuser, $dbpass);
        if (mysqli_connect_errno())
            die ('Ошибка соединения с БД: '.mysqli_connect_error());
        $link->set_charset($charset);
    }
    public function db_query($query){
        $query=$link->query($query);
        if (!$query)
            return 'Ошибка запроса к БД: '.mysqli_errno();
    }
    public function db_row(){
        while($row->fetch_assoc($query))
              //здесь работа с данными
    }
    public function db_num_rows($query){
        $link->num_rows($query);
    }
    public function db_close(){
        $link->close();
    }
}
И как я к этому обращаюсь:
model_main.php (т.е. обращаюсь я из модели)
PHP
1
2
3
4
                require_once $_SERVER['DOCUMENT_ROOT'] . "/extensions/db.php";
        $this->db = new db('mysql.hostinger.ru','u157115651_44644','gluk3662','utf-8');
        $this->db->db_query("SELECT * FROM `index`");
        $this->db->db_row();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2014, 01:17
Ответы с готовыми решениями:

Mysqli ООП или процедурный подход
Вот интересно, услышать мнение специалистов, что лучшие использовать при работе с mysqli ООП или процедурный подход, что больше используют...

Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in
Здравствуйте! Подскажите как решить проблему с выдаваемыми ошибками: Вот сам файл install.php &lt;?php //Подключение нужных...

Mysqli
Подскажите, пожалуйста как оформить правильно запрос к бд из php чтоб создать таблицу с полем id int autoincrement primary id...

3
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
09.09.2014, 08:57
Осталось понять зачем вы это делаете.. Имею ввиду класс обертку, который не добавляет никакого нового функционала к mysqli.. Но если хотите, то вот исправленный код(укажите только имя базы данных):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
        class db {
 
            private $link, $query;
 
            public function __construct($dbhost, $dbuser, $dbpass, $charset) {
                $this->link = new mysqli($dbhost, $dbuser, $dbpass, 'your-database-name');
                if (mysqli_connect_errno())
                    die('Ошибка соединения с БД: ' . mysqli_connect_error());
                $this->link->set_charset($charset);
            }
 
            public function db_query($query) {
                $this->query = $this->link->query($query);
                if (!$this->query)
                    return 'Ошибка запроса к БД: ' . mysqli_errno();
            }
 
            public function db_row() {
                while ($row = $this->query->fetch_assoc()) {
                    var_dump($row);
                }
            }
 
            public function db_num_rows() {
                $this->link->num_rows($this->query);
            }
 
            public function db_close() {
                $this->link->close();
            }
 
        }
 
        $db = new db('mysql.hostinger.ru', 'u157115651_44644', 'gluk3662', 'utf-8');
        $db->db_query("SELECT * FROM `index`");
        $db->db_row();
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
09.09.2014, 10:02
M1lleniuM, рекомендую также почаще оставлять свои логины с паролем на как можно большем числе форумов, желательно не только от хостингерского майскуля, но заодно и от разных коммерческих хостингов. гарантирую что у вас все подключится, а также кучу другого приятного волшебства, и приятных сюрпризов на вашем сайте! спасибо, вы как никто другой понимаете и поддерживаете фразу, что информация должна быть действительно свободной!
низкий вам поклон
0
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
09.09.2014, 15:14  [ТС]
Цитата Сообщение от NEbO Посмотреть сообщение
M1lleniuM, рекомендую также почаще оставлять свои логины с паролем на как можно большем числе форумов, желательно не только от хостингерского майскуля, но заодно и от разных коммерческих хостингов. гарантирую что у вас все подключится, а также кучу другого приятного волшебства, и приятных сюрпризов на вашем сайте! спасибо, вы как никто другой понимаете и поддерживаете фразу, что информация должна быть действительно свободной!
низкий вам поклон
Да, действительно. Это мой косяк. Я скопировал не подумав. Обычно проверяю такие вещи. Заметил поздно, а сообщение редактировать нельзя. Но т.к. аккаунт там абсолютно ничего важного не содержит, решил не писать модераторам.

Цитата Сообщение от ads Посмотреть сообщение
Осталось понять зачем вы это делаете.. Имею ввиду класс обертку, который не добавляет никакого нового функционала к mysqli.. Но если хотите, то вот исправленный код(укажите только имя базы данных):
Хм. т.е. получается создавать отдельный класс не нужно? Хотя, логично, учитывая то, что mysqli уже класс. И получается класс в классе, бред.

Тогда просто подходить таким способом
PHP
1
2
3
4
5
6
7
class model {
     public $link;
     function get_data(){
        $this->link = new mysqli (данные для подключения);
        $this->query(запрос);
        //и т.д.
}
Добавлено через 5 часов 2 минуты
Цитата Сообщение от ads Посмотреть сообщение
Осталось понять зачем вы это делаете.. Имею ввиду класс обертку, который не добавляет никакого нового функционала к mysqli.. Но если хотите, то вот исправленный код(укажите только имя базы данных):
Переделал по-другому. Добавил в модель метод. Но почему-то в массив $row (возвращаемых рядах запроса) имею NULL. Как-будто не идет соединение с базой данных. Можете подсказать в чем проблема?
Код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
class Model_Main extends Model{
    public $link;
    public $row;
    public $query;
    public $array_image;
    public $array_i;
 
 
    public function get_data() {
 
        $this->db("SELECT * FROM `index` WHERE `id` = (SELECT COUNT(*) FROM `index`)");
        echo '<pre>' . var_dump($row) . '</pre>';
        if (is_array($row))
            extract($row, EXTR_PREFIX_ALL, 'db_');
        for ($i=1; $i<=$db_count_image; $i++){
            $array_image[]=$db_path_image . '/' . $i . 'jpg';
    
        }
        
        $array_i=json_encode($array_image);
    
    }
 
 
    public function db($query) {
        try {
            $link = new mysqli('','','','');
            $link->set_charset("utf-8");
            $query = $link->query($query);
            return $row = $query->fetch_assoc();
        }
        catch (Exception $e) {
            return 'Error: <br />' . $e->getMessage();
        }
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2014, 15:14
Помогаю со студенческими работами здесь

MySQLi
Привет всем. Проблема такая: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in www\index.php on line 6 ...

MySQLi
Как будет mysql_insert_id(); в MySQLi?

PDO и MySQLi
Какой способ предпочтительнее использовать? В мануале смутило что PDO нужно собирать вместе с PHP и PDO настолько же хорошо...

MySQL в mySQLi
Решил перевести движок с mySQL на mySQLi и нашел проблему: if(isset($_POST) AND $_POST == $_POST AND !empty($_POST)){ ...

Переход на mysqli
Здравствуйте, подскажите как исправить эту ошибку, хотя вроде mysqli поддерживается в версиях 5+? phpmyadmin: Информация о версии: 4.5.1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru