25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391

ООП и mysqli

09.09.2014, 01:17. Показов 2749. Ответов 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 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru