Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 7

Правка готового класса MySQLi

17.08.2015, 16:19. Показов 858. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый,

Есть удобный(для меня) класс для работы с MySQLi, но увы, я наверное рукожоп и когда дело коснулось того, что его нужно подпилить(а конкретнее - избавится от структуры с define"ами для возможности использования нескольких ДБ в рамках 1 скрипта)

В кратце:
Вызов конекта к базе вызывается так:
PHP
1
2
3
4
5
6
7
8
9
define( 'DB_HOST', 'localhost' ); // set database host
define( 'DB_USER', 'root' ); // set database user
define( 'DB_PASS', 'root' ); // set database password
define( 'DB_NAME', 'yourdatabasename' ); // set database name
define( 'SEND_ERRORS_TO', 'you@yourwebsite.com' ); //set email notification email address
define( 'DISPLAY_DEBUG', true ); //display db errors?
require_once( 'class.db.php' );
//Initiate the class
$database = new DB();
Я хочу, чтоб он вызывался так:
PHP
1
2
3
require_once( 'class.db.php' );
//Initiate the class
$database = new DB($host,$user,$pass,$db);
Для этого я пробовал изменить скрипт и вышло(привожу только начало, т.к. дальше нигде костанты не используются:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class DB
{
    private $link = null;
    public $filter;
    static $inst = null;
    public static $counter = 0;
 
    [B]protected $host, $user, $pass, $db;[/B]
    /**
     * Allow the class to send admins a message alerting them to errors
     * on production sites
     *
     * @access public
     * @param string $error
     * @param string $query
     * @return mixed
     */
    public function log_db_errors( $error, $query )
    {
        $message = '<p>Error at '. date('Y-m-d H:i:s').':</p>';
        $message .= '<p>Query: '. htmlentities( $query ).'<br />';
        $message .= 'Error: ' . $error;
        $message .= '</p>';
 
        if( defined( 'SEND_ERRORS_TO' ) )
        {
            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'To: Admin <'.SEND_ERRORS_TO.'>' . "\r\n";
            $headers .= 'From: Yoursite <system@'.$_SERVER['SERVER_NAME'].'.com>' . "\r\n";
 
            mail( SEND_ERRORS_TO, 'Database Error', $message, $headers );   
        }
        else
        {
            trigger_error( $message );
        }
 
        if( !defined( 'DISPLAY_DEBUG' ) || ( defined( 'DISPLAY_DEBUG' ) && DISPLAY_DEBUG ) )
        {
            echo $message;   
        }
    }
    
    
    public function __construct([B]$host, $user, $pass, $db[/B])
    {
        mb_internal_encoding( 'UTF-8' );
        mb_regex_encoding( 'UTF-8' );
        mysqli_report( MYSQLI_REPORT_STRICT );
        try {
            $this->link = new mysqli( [B]$this->host, $this->user, $this->pass, $this->db[/B] );
            $this->link->set_charset( "utf8" );
        } catch ( Exception $e ) {
            die( 'Unable to connect to database' );
        }
    }
После этих манипуляций, пробую так, как описал выше и получаю ошибку: Error: No database selected

Видимо где-то допускаю ошибку , но никак не пойму где.. не подскажите?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.08.2015, 16:19
Ответы с готовыми решениями:

Ошибка подключения к БД: Warning: mysqli::mysqli() [mysqli.mysqli]: (28000/1045): Access denied for user
Есть магазин на OpenCart, необходимо сделать, чтобы при введении посетителем определенной инфы в форме эта инфа сохранялась в базе данных....

Warning: mysqli::mysqli() [mysqli.mysqli]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен
Денвер запущен, локалхост доступен, через cmd логинюсь в mysql.exe успешно. Вот что выводится на странице при попытке подключения к...

Создание тестового класса (метода) для готового класса в Java
Может я чего-то не понимаю. Так вот.Припустим я создал готовый класс в Java,который выполняет какие-то действия.но его нужно...

1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.08.2015, 16:56
Цитата Сообщение от DiWorm Посмотреть сообщение
Видимо где-то допускаю ошибку
Цитата Сообщение от DiWorm Посмотреть сообщение
$this->link = new mysqli( $this->host, $this->user, $this->pass, $this->db );
...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.08.2015, 16:56
Помогаю со студенческими работами здесь

Как построить экземпляр дочернего класса на основе готового экземпляра базового класса?
Если уже есть готовый объект базового класса. Могу я построить экземпляр дочернего на его основе, (напр., получив такой базовый объект...

Mysqli внутри класса
class db { const IP = &quot;***&quot;; const USERNAME = &quot;***&quot;; const PASSWORD = &quot;***&quot;; const DBNAME = &quot;***&quot;; public $mysqli; ...

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

Предупреждение: mysqli:: mysqli (): (28000/1045): Доступ запрещен для пользователя 'u160160328' '10.2.1.44' (и
Предупреждение: mysqli:: mysqli (): (28000/1045): Доступ запрещен для пользователя 'u160160328' '10.2.1.44' (использование пароля: ДА)...

Правка скрипта
Помогите пожалуйста поправить код, что-бы что-бы вместо &lt; select id=&quot;select_2&quot; &gt; значения изменялись в &lt; span...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
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