• Страница 1 из 1
  • 1
Модератор форума: Dimitro, LightInDarkness  
Простейший класс для работы с БД
Хомяк_Егор
Капрал
Code
class db {

        private $host      = 'localhost';
        private $base      = 'temp';
        private $user      = 'root';
        private $pass      = '';
        private $charset   = 'utf8';
        private $collation = 'utf8_general_ci';

        // соединение с базой --------------------------------------------------

        function connect() {

                $this->db = mysql_connect($this->host, $this->user, $this->pass);
                mysql_select_db($this->base, $this->db);
                mysql_query('SET NAMES ' . $this->charset);
                mysql_set_charset($this->charset);
        }
         
        // выборка данных ------------------------------------------------------
         
        function select($fields, $tables, $conditions) {

                if (count($fields)===0 || count($tables)===0 || count($conditions)===0)
                 
                        return FALSE;
                         
                else {
                        // поля

                        reset ($fields);

                        list($key, $val) = each($fields);

                        $query_text = 'SELECT ' . $val;

                        while (list($key, $val) = each($fields))

                    $query_text = $query_text . ', ' . $val;

                        // таблицы

                        reset ($tables);

                        list($key, $val) = each($tables);

                        $query_text = $query_text . ' FROM ' . $val;

                        while (list($key, $val) = each($tables))

                    $query_text = $query_text . ', ' . $val;

                        // условия
                         
                        reset ($conditions);
                         
                        list($key, $val) = each($conditions);
                         
                        $query_text = $query_text . ' WHERE ' . $key . '=' . $val;
                         
                        while (list($key, $val) = each($conditions))
                         
                    $query_text = $query_text . ', ' . $key . '=' . $val;
                    

                        return $mysql_query($query_text);
                }
        }

        // закрытие соединения -------------------------------------------------

        function disconnect() {
         
                mysql_close($this->db);
        }
         
        //----------------------------------------------------------------------

}


Простейший класс для работой с БД: подключение, запрос, отключение. Перед вставкой данных в запрос неплохо бы их очистить от некорректных данных и привести к соответствующим типам, дабы численные данные стояли в запросе без кавычек, а текстовые - в них. Если с первым проблем нет, то как как лучше сделать второе я не знаю. Не очень хочется при обращении к объекту передавать кроме ключа и значения еще и тип переменной.
К каждому ключу при обращении к классу можно дописывать _int, _string или _bool, при обработке их отрезать и обрабатывать значения в соответствии с ними. Но как-то некрасиво это...
Сообщение # 1 написано 25.02.2012 в 18:23
Asakura97
<<*Will Never Die*>>
Неплохо только заметил раздел
Сообщение # 2 написано 25.02.2012 в 22:49
RazArt
Тазовод
И зачем оно? когда все активно переходят на mysqli и PDO?

Добавлено (26.02.2012, 11:52)
---------------------------------------------

Code
private $host      = 'localhost';
private $base      = 'temp';
private $user      = 'root';
private $pass      = '';
private $charset   = 'utf8';
private $collation = 'utf8_general_ci';

function connect()  
{
     $this->db = mysql_connect($this->host, $this->user, $this->pass);
     mysql_select_db($this->base, $this->db);
     mysql_query('SET NAMES ' . $this->charset);
     mysql_set_charset($this->charset);
}


Зачем настройки внутри класса? а если нужны несколько подключений?
DumpMe v1.0 - система автоматического переноса персонажей

Вышла в свет первая стабильная версия. Писать в скайп - razart8
Сообщение # 3 написано 26.02.2012 в 11:52
Mago_De_Sombra
Маршал
RazArt, тс копипастит без понимания сути.
вообще данный раздел обречён на вымирание. всё потому, что здесь инфу (опять же без понимания сути) копипастят все, кому не лень и тупо ради местной валюты.
Сообщение # 4 написано 01.03.2012 в 01:30
RazArt
Тазовод
И да.. код убог в принципе, хотя бы экранирование можно было добавить в запросах и проверку на подключение, прежде чем его закрывать..
DumpMe v1.0 - система автоматического переноса персонажей

Вышла в свет первая стабильная версия. Писать в скайп - razart8
Сообщение # 5 написано 01.03.2012 в 09:31
Mago_De_Sombra
Маршал
Quote (Хомяк_Егор)
Не очень хочется при обращении к объекту передавать кроме ключа и значения еще и тип переменной.


Советчик блин...

http://php.net/manual/en/function.gettype.php
Сообщение # 6 написано 02.03.2012 в 02:18
  • Страница 1 из 1
  • 1
Поиск: