Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс для работы с базой, Обсуждаем, делаем... 
V
    Опции темы
IZ@TOP
Дата 7.9.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Цитата(Wowa @  7.9.2006,  11:05 Найти цитируемый пост)
неа, недостаточно. Во всех перечисленных тобою вещах множественную вставку - редко где придется делать, да и не будет она большой(ну самый максимум 20 строк) и выполняться будет крайне редко. Поэтому тут совершенно очевидно, что должен использоваться тот код, который более понятен потом при разборке будет, тот код - который удобнее разработчику писать. 

Хорошо - возьмем программы передач/афишу. Сколько вставок делается за один раз при импорте данных? Лучше 10 раз по 100 чем 1000 раз подряд. По моему действительно глупый спор. Я пытаюсь об оптимизации разработки и уменьшении затрачиваемых ресурсов сервера говорить. По моему на это все же стоит обратить внимание.

Добавлено @ 11:17 
И еще  мне кажется что использовании метадологии DataObjects приведет к тому что добавление одного поля в базе и инпута в шаблон это все что нужно будет сделать для модификации компонента/модуля.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IZ@TOP
Дата 22.9.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73





--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Alone
Дата 17.10.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



Ребята, я думаю, Вам надо почитать про ORM.

Это спасет отца русской демократии...



--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Wowa
Дата 21.10.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Alone @  17.10.2006,  10:45 Найти цитируемый пост)
Ребята, я думаю, Вам надо почитать про ORM.

Ты имеешь ввиду Object-relational_mapping. Зачем нам объектные базы данных? Кто и что думает по этому поводу? Мне кажется, что не нужно.
PM WWW   Вверх
Semenov
Дата 23.10.2006, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.10.2006
Где: г. Набережные Чел ны

Репутация: нет
Всего: нет



Я не вижу смысла в orm. Мое мнение - не нужно.
PM MAIL WWW ICQ   Вверх
korchasa
Дата 18.7.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 3.7.2007

Репутация: нет
Всего: нет



Цитата(Semenov @ 23.10.2006,  08:53)
Я не вижу смысла в orm. Мое мнение - не нужно.

Сразу после этой фразы можно прекращать разработку. Так как наличие большого объема запросов к данным (пусть даже в виде DBAL) приведет к "костности" системы.
PM MAIL   Вверх
imm
Дата 13.10.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 27.7.2005

Репутация: нет
Всего: 1



А уже хоть что-нибудь готово, или вы все спорите?
PM MAIL WWW ICQ   Вверх
SlikJay
Дата 24.4.2008, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



PM MAIL   Вверх
DeamonShan
Дата 29.4.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: нет
Всего: 6



Предлагаю использовать классы от форума PHPBB очень неплохие классы, у них почти под все БД есть классы... синтаксис один а БД можно использовать любую.. MSSQL, MySQL, PosgreSQL итд итп...
PM MAIL   Вверх
awers
Дата 14.2.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 3
Всего: 31



Немного работы над ошибками провести и юзать сие:
Код

<?php
class M_Core_DB{
    static private $instance = null;
    static function getInstance($params = false){
        if (self::$instance == null){
            self::$instance = new M_Core_DB($params);
        }
        return self::$instance;
    }
    public $handler = null;
    protected $stmt = null;
    protected $keys = array();
    protected $meta = null;
    public function __construct($params = false){
        if ($params) $this->connect($params);
    }

    public function connect($params){
        if (!$params) throw new Exception('Params error');
        if (!$this->handler = new mysqli($params['host'],$params['login'],$params['password'],$params['db'])) throw new Exception(mysqli_error());
        if (array_key_exists('encoding',$params)) $this->query("set names ".$params['encoding']); else $this->query("set names UTF8");
    }
    
    public function query($query, $params = false){
        $this->stmt = $this->handler->prepare($query);
        if (!$this->stmt){
            throw new Exception(mysqli_error($this->handler)."\n\n".$query); 
        }
        if ($params){
            if (!is_array($params)) $params = array($params);
            array_unshift($params, str_repeat('s', count($params)));
            call_user_func_array(array($this->stmt, 'bind_param'),$params);
        }
        $this->stmt->execute();
        $this->stmt->close();
    }
    
    
    public function _execute($query,$params = false){
        $this->stmt = $this->handler->prepare($query);
        if (!$this->stmt){
            throw new Exception(mysqli_error($this->handler)."\n\n".$query); 
        }
        if ($params){
            if (!is_array($params)) $params = array($params);
            array_unshift($params, str_repeat('s', count($params)));
            call_user_func_array(array($this->stmt, 'bind_param'),$params);
        }
        $this->stmt->execute();
        
        $this->meta = $this->stmt->result_metadata();
        $this->keys = array();
        foreach ($this->meta->fetch_fields() as $col) $this->keys[] = $col->name;
        $this->stmt->store_result();
    }
    
    public function fetch(){
        $values = array_fill(0, count($this->keys), null);
        $refs = array();
        foreach ($values as $i => &$f) $refs[$i] = &$f;
        
        call_user_func_array(array($this->stmt, 'bind_result'),$values);
        $retval = $this->stmt->fetch();
        if (!$retval){
         $this->stmt->reset();
         return $retval;
        }
        return array_combine($this->keys, $values);
    }
    
    public function fetchAll($query,$params = false){
        $this->_execute($query,$params);
        
        $data = array();
        while ($row = $this->fetch()){
            $data[] = $row;
        }
        return $data;
        
    }
    
    public function fetchOne($query, $params = false){
        $this->_execute($query,$params);
        
        $this->stmt->bind_result($result);
        $this->stmt->fetch();
        $this->stmt->reset();
        return $result;
    }
    
    public function num_rows(){
        return $this->stmt->num_rows();
    }
    
    public function lastInsertId(){
        return $this->handler->insert_id;
    }
}


Одно точно - юзать стоит именно mysqli. И сторонние либы нафиг нафиг. 
PM MAIL WWW ICQ Skype   Вверх
Wowa
Дата 14.2.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(awers @  14.2.2009,  15:02 Найти цитируемый пост)
Одно точно - юзать стоит именно mysqli. И сторонние либы нафиг нафиг.  

можешь пояснить почему?
PM WWW   Вверх
awers
Дата 14.2.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 3
Всего: 31



быстро, современно, никаких mysql_real_escape_string и пр.

Добавлено через 4 минуты и 16 секунд
На счёт стабильности - я на этом классе за прошлый год три с половиной десятка сайтов запустип. Нареканий пока никаких. Жизнеспособно )
PM MAIL WWW ICQ Skype   Вверх
IZ@TOP
Дата 27.2.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Цитата(awers @  14.2.2009,  17:52 Найти цитируемый пост)
быстро, современно, никаких mysql_real_escape_string и пр.

Добавлено через 4 минуты и 16 секунд
На счёт стабильности - я на этом классе за прошлый год три с половиной десятка сайтов запустип. Нареканий пока никаких. Жизнеспособно ) 


Ну, как бы escape_string там тоже есть.
На счет работоспособности - обкатано на продакшене высоконагруженного проекта. Однако, сам класс mysqli все равно прикрыт оболочкой и моделькой. Напрямую никогда не используется.



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Vingrad CMS | Следующая тема »


 




[ Время генерации скрипта: 0.1555 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.