За последние 24 часа нас посетили 18864 программиста и 1732 робота. Сейчас ищут 1263 программиста ...

Тайд или кипячение?

Тема в разделе "Прочее", создана пользователем Koc, 29 окт 2008.

  1. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    пацтулом! ))
    +10
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    короче вот так плохо
    PHP:
    1. <?
    2. $db -> query( "INSERT INTO mytable VALUES('" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."', '" . mysql_real_escape_string( $_POST['something'] ) ."')" );
    3.  
    4. $db -> query( "INSERT INTO mytable VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", $_POST['something'], $_POST['something'], $_POST['something'], $_POST['something'], $_POST['something'], $_POST['something'], $_POST['something'], $_POST['something'], $_POST['something'], $_POST['something'] );
    5. ?>
    вот так хорошо
    PHP:
    1. <?
    2. class db{
    3.     function insert( $table, $content ){
    4.         foreach( $content as &$v ){
    5.             $v = mysql_real_escape_string( $v );
    6.         }
    7.         $sql = "INSERT INTO `$table` ";
    8.         $sql .= "(`" . implode( "`,`", array_keys( $content ) ) . "`) ";
    9.         $sql .= "VALUES('" . implode( "','", $content ) . "') ";
    10.         $this -> query( $sql );
    11.     }
    12. }
    13. $db = new db;
    14. $db -> insert( 'mytable', array(
    15.     'something' => $_POST['something'],
    16.     'something' => $_POST['something'],
    17.     'something' => $_POST['something'],
    18.     'something' => $_POST['something'],
    19.     'something' => $_POST['something'],
    20.     'something' => $_POST['something'],
    21.     'something' => $_POST['something'],
    22.     'something' => $_POST['something'],
    23.     'something' => $_POST['something'],
    24.     'something' => $_POST['something'],
    25. ) );
    26. ?>
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Mr.M.I.T.
    В принципе, все верно, относительно следующего поста.
    Но тут дело в чем - программер всегда должен видеть запрос в базу. Вот какую он делает обработку - не обязательно.
    С одной стороны удобно пихнуть в метод название таблицы и переменные, а с другой - нет. Если мне надо апдейтить какие-то определенные строки или выбирать сложным запросом?
    Поэтому на мой взгляд, должен быть метод обработки переменных, которые возвращаются в виде строки, в свою очередь которую мы конкатенируем в основной запрос.
     
  4. dAllonE

    dAllonE Guest

    Что-то мне эта тема уже начинает напоминать холивар в стиле Intel vs AMD или ООП vs Func... ;)
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    О классов интерфейсы могут быть самыми разными, интрефйс работы с функцией всегда одинаков, тем более, что некоторые редакторы даже высвечивают список аргументов, при вводе имени функции! :Р
     
  6. decoder

    decoder Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    [vs]
    Некоторые редакторы даже высвечивают список доступных свойств и методов при вводе "имени объекта".
    А потом соответственно для методов даже высвечивают список аргументов!
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Запуися мона в таком количестве инфы :D
     
  8. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    итак, с сегодняшнего дня буду переходить с немного переделанного mysql-класса от Slaed CMS 2.0 (фуууу, достало спринтэфом фигачить). Перехожу на goDB, который является настройкой над Mysqli.

    Так-с, но вот проблемка: я считаю, что не нужно фигачить данные в массив array($id). Нужно их передавать просто так, списком.

    Поэтому нафигачил еще один класс, надстройку "под себя". В дальнейшем планирую отказаться от goDB и написать что-то свое.

    PHP:
    1. <?php
    2. //TODO: как получить количество затронутых рядов уже после выполнения запроса?
    3. //TODO: каким образом сделать видимым методы которых нет в IDE?
    4. class DB
    5. {
    6.     private $db;
    7.     public $errors;
    8.    
    9.     function __construct($settings)
    10.     {
    11.         $this->db = new goDB($settings);
    12.     }
    13.    
    14.     function __call($m, $argv)
    15.     {
    16.         $types = array(
    17.             'query'=>NULL,
    18.            
    19.             'assocAll'=>'assoc',
    20.             'fetchAll'=>'row',
    21.             'colAll'=>'col',
    22.            
    23.             'iassocAll'=>'iassoc',
    24.             'ifetchAll'=>'irow',
    25.             'icolAll'=>'icol',
    26.  
    27.             'assoc'=>'assocrow',
    28.             'fetch'=>'rowrow',
    29.            
    30.             'el'=>'el',
    31.             'id'=>'id',
    32.             'ar'=>'ar',
    33.             'num'=>'num'
    34.         );
    35.         if(!array_key_exists($m, $types))
    36.             $m = 'query';
    37.         $pattern = array_shift($argv);
    38.         try {
    39.             $result = $db->query(
    40.                 $pattern,       // sql pattern
    41.                 $argv,      // data
    42.                 $types[$m]  // type
    43.             );
    44.         } catch (goDBExceptionQuery $e) {
    45.             $this->errors[] = array(
    46.                 'error'=>$e->error(),
    47.                 'errorNo'=>$e->errno(),
    48.                 'query'=>$e->query()
    49.             );
    50.         }
    51.         return $result;
    52.     }
    53. }
    54. ?>
    если кто-то может помочь с TODO, буду рад
     
  9. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Разрабатываю поделку наподобие goDB.
    скажите пожалуйста, а вот насколько оправданы такие конструкции:

    PHP:
    1. <?php
    2. $what = array(
    3.     array('goods', 'id'),
    4.     'cid', 'mid', 'model', 'price',
    5.     'quantity', 'is_active', 'attribute_set',
    6.     'atr_set', 'atr_set_nva',
    7.     array('manufacturer', 'title', 'manufacturer')
    8. );
    9.  
    10. $from = array('goods', 'category', 'attribute_set', 'manufacturer');
    11. $db->query('SELECT ?c@ FROM ?t@ WHERE ?c=?i AND ?c=cid AND ?c=?c AND ?c=mid LIMIT 0,1',
    12.     $what, $from,
    13.     array('goods', 'id'),
    14.     $_GET['id'],
    15.     array('category', 'id'),
    16.     array('attribute_set', 'id'),
    17.     array('category', 'attribute_set'),
    18.     array('manufacturer', 'id')
    19. );
    20.  
    в итоге это преобразуется в
    [sql]
    SELECT `tt_goods`.`id`,`cid`,`mid`,`model`,`price`,`quantity`,`is_active`,`attribute_set`,`atr_set`,`atr_set_nva`,`tt_manufacturer`.`title` AS manufacturer FROM `tt_goods`,`tt_category`,`tt_attribute_set`,`tt_manufacturer` WHERE `tt_goods`.`id`=2 AND `tt_category`.`id`=cid AND `tt_attribute_set`.`id`=`tt_category`.`attribute_set` AND `tt_manufacturer`.`id`=mid LIMIT 0,1[/sql]

    стоит ли использовать такие штуки в реальных проектах или будет очень тормозить? Парсится все это дело регуляркой
    PHP:
    1. <?php
    2.     '#\?(\?|c@|t@|k@|i@|f@|s@|c|t|k|i|f|s|@)#',
    3.     array($this, 'formatQueryСallback'),
    4.     $subject
    5. );
    6.  
    , где formatQueryСallback - ф-ция из 1 switch и кучи case
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    А зачем это? Одно дело так подставлять значения, чтобы каждый раз их не проверять. А другое - имена полей =\
    И вообще, @ - это спецсимвол.

    Я такую фигню написал:
    PHP:
    1.  
    2. <?php
    3. /*
    4. Класс для работы с базой данных
    5. 2.01.2009
    6. collaider.com
    7. Кича Владимир
    8. */
    9.  
    10. class database {
    11.  
    12.     private $connect;
    13.     private static $instance;
    14.     private $resourse;
    15.     public $query_value = 1;
    16.     public $query_text;
    17.    
    18.     function __construct () {
    19.  
    20.         global $sqladd, $sqlport, $sqluser, $sqlpwd, $sqlbase;
    21.        
    22.         $this->connect = new mysqli ($sqladd, $sqluser, $sqlpwd, $sqlbase, $sqlport);
    23.                        
    24.             if (!$this->connect)
    25.                 throw new Exception("db_no_connect");
    26.  
    27.         $this->connect->query("SET NAMES 'utf8', lc_time_names = 'ru_RU'");
    28.     }
    29.    
    30.    
    31.    
    32.    
    33.     /*
    34.     * Возвращает ссылку на объект
    35.     * @return &object
    36.     */
    37.  
    38.     public static function getInstance() {
    39.    
    40.         if (!isset(self::$instance)) {
    41.             $class = __CLASS__;
    42.             self::$instance = new $class;
    43.         }
    44.         return self::$instance;
    45.     }
    46.    
    47.    
    48.    
    49.    
    50.    
    51.    
    52.     /*
    53.     * Метод, делающий запрос к базе
    54.     * @param mixed $method - имя обрабатывающего метода
    55.     * @param string $query - запрос
    56.     * @return mixed
    57.     */
    58.     public function query($method, $query) {
    59.  
    60.         $this->query_value++;
    61.        
    62.         if (func_num_args() > 2) {
    63.             $types = array();
    64.             $newquery = '';
    65.             $args = func_get_args();
    66.             for ($i = 0, $length = strlen($query), $arg = 2; $i < $length; $i++) {
    67.            
    68.                 if ($query[$i] == '?') {
    69.                    
    70.                     switch ($query[$i+1]) {
    71.                         case "i":
    72.                             $newquery .= (int)$args[$arg];
    73.                             break;
    74.                         case "d":
    75.                             $newquery .= (double)$args[$arg];
    76.                             break;
    77.                         case "s":
    78.                             $newquery .= $this->connect->real_escape_string($args[$arg]);
    79.                             break;
    80.                     }
    81.                     $i++;
    82.                     $arg++;
    83.                 }
    84.                 else {
    85.                     $newquery .= $query[$i];
    86.                 }
    87.            
    88.             }
    89.             $this->query_text = $newquery;
    90.         }
    91.         else {
    92.             $this->query_text = $query;
    93.         }
    94.  
    95.         $this->resourse = $this->connect->query($this->query_text);
    96.        
    97.         if (!$this->resourse)
    98.             throw new Exception('db_error');
    99.    
    100.         if (is_array($method))
    101.             $result = call_user_func(array($this, array_shift($method)), $method);
    102.         else
    103.             $result = ($method != 'nonresult') ?  $this->{$method}() : true;
    104.  
    105.        
    106.         return $result;
    107.     }
    108.    
    109.    
    110.    
    111.    
    112.    
    113.    
    114.     /*
    115.     * Метод, возвращающий выборку из базы в виде массива
    116.     * @param string $keyrow - имя ключа (по умолчанию итерационная нумерация с 0)
    117.     * @param bool $unsetKey - удаляет ключ из вложенного массива в случае $unsetKey == true
    118.     * @return array - результат выборки:
    119.     * Array ( [0] => Array ( [id] = 1, [text] = "abc"), [1] => Array ( [id] = 2, [text] = "def"))  -- без параметров
    120.     * Array ( [id=1] => Array ( [id] = 1, [text] = "abc"), [id=2] => Array ( [id] = 2, [text] = "def"))  -- со вторым параметром, равным id
    121.     * Array ( [id=1] => Array ( [text] = "abc"), [id=2] => Array ( [text] = "def"))  -- со вторым параметром, равным id, и третьим true
    122.     */
    123.     public function getArray($keyrow = false, $unsetKey = false) {
    124.        
    125.         $args = func_get_args();
    126.  
    127.         if (isset($args[0])) {
    128.             if (sizeof($args[0]) > 0) {
    129.                 $keyrow = $args[0][0];
    130.                 if (isset($args[0][1]))
    131.                     $unsetKey = true;
    132.             }
    133.         }
    134.        
    135.         $result = Array();
    136.         if ($keyrow == false) {
    137.             while ($row = $this->resourse->fetch_array(MYSQLI_ASSOC))
    138.                 $result[] = $row;
    139.         }
    140.         else {
    141.             while ($row = $this->resourse->fetch_array(MYSQLI_ASSOC)) {
    142.                 $key = $row[$keyrow];
    143.                
    144.                 if ($unsetKey == true)
    145.                     unset($row[$keyrow]);
    146.                
    147.                 $result[$key] = $row;
    148.                    
    149.             }
    150.         }
    151.  
    152.         $this->resourse->close();
    153.  
    154.         return $result;
    155.     }
    156.    
    157.    
    158.    
    159.    
    160.    
    161.     /*
    162.     * Метод, возвращающий последний вставленный id.
    163.     * @return int
    164.     */
    165.     public function lastId() {
    166.    
    167.         return $this->connect->insert_id;
    168.        
    169.     }
    170.    
    171.    
    172.    
    173.    
    174.    
    175.     /*
    176.     * Метод, возвращающий выборку из базы в виде простого ассоциативного массива, ключ которого являются выбранными полями:
    177.     * @param string $key - имя ассоциативного ключа
    178.     * @param string $value - имя поля в базе
    179.     * @return array - результат выборки:
    180.     *  Array ( [id=1] = [text= "abc"], [id=2] = [text= "def])
    181.     *  Array ( [0] = [text= "abc"], [1] = [text= "def])  -- в случае $key == 0
    182.     */
    183.     public function getSimpleAssocArray($key, $value) {
    184.        
    185.         $args = func_get_args();
    186.        
    187.         if (sizeof($args[0]) < 2)
    188.             throw new Exception("db_error");
    189.  
    190.         $result = Array();
    191.        
    192.         if ($args[0][0]) {
    193.             while ($row = $this->resourse->fetch_array(MYSQLI_ASSOC)) {
    194.                 $id = $row[$args[0][0]];
    195.                 $result[$id] = $row[$args[0][1]];
    196.             }
    197.         }
    198.         else {
    199.             while ($row =  $this->resourse->fetch_array(MYSQLI_ASSOC))
    200.                 $result[] = $row[$args[0][1]];
    201.         }
    202.        
    203.         $resourse->close();
    204.  
    205.         return $result;
    206.     }
    207.  
    208.  
    209.    
    210.    
    211.    
    212.     /*
    213.     * Метод, возвращающий выборку из базы в виде одномерного ассоциативного массива
    214.     * @return array - результат выборки:
    215.     *  Array ( [id] = 1, [text] = "abc")
    216.     */
    217.     public function getSimpleArray() {
    218.        
    219.         $result = $this->resourse->fetch_array(MYSQLI_ASSOC);
    220.         $this->resourse->close();
    221.        
    222.         return $result;
    223.     }
    224.    
    225.    
    226.  
    227.  
    228.  
    229.     /*
    230.     * Метод, возвращающий выборку из базы в виде переменной
    231.     * @return string - результат выборки
    232.     */
    233.     public function getValue() {
    234.        
    235.         $result = $this->resourse->fetch_array(MYSQLI_NUM);
    236.  
    237.         return $result[0];
    238.     }
    239.  
    240.    
    241.    
    242.    
    243.     /*
    244.     * Метод, возвращающий ошибки
    245.     * @param array $vars - переменные
    246.     * @return string - результат выборки
    247.     */
    248.     public function getErrors() {
    249.  
    250.         return date("[d.m.Y H:i] ") . $this->connect->error."<br>Query:  ".$this->query_text.'<br>';
    251.  
    252.     }
    253.  
    254. }
    255. ?>
    256.  
    Про ?s подсмотрел в запросах vasa_c
    Юзать так:
    PHP:
    1.  
    2. <?php
    3. $query = 'SELECT * FROM `pages` WHERE `id`=?i'
    4. $array = $db->query('getArray', $query, $_GET["id"]);  
    5.  
    PHP:
    1.  
    2. <?php
    3. $db = database::getInstance();
    4. $db->query(mixed $method, string $query [, mixed $var [, ...]]);
    5.  
    6.     $method:
    7.         Для UPDATE, DELETE, INSERT возвращается true в случае удачи. $method == noresult
    8.         Для SELECT:
    9.             string $method_name -- для вызова метода без аргументов
    10.             array (string $method_name, mixed $arg [, mixed $arg2 [, ...]])  -- метод с аргументами
    11.     Методы:
    12.         getArray([mixed $keyrow ] [, midex $unsetKey]) -- возвращает массив
    13.        
    14.             без аргументов:                        со вторым параметром, равным id:
    15.             Array (                                 Array (
    16.                 [0] => Array (                      id ->[1] => Array (
    17.                             [id] = 1,                                   [id] = 1,              
    18.                             [text] = "abc"                              [text] = "abc"
    19.                             ),                                          ),
    20.                 [1] => Array (                          [2] => Array (
    21.                             [id] = 2,                                   [id] = 2,
    22.                             [text] = "def"                              [text] = "def"
    23.                             )                                           )
    24.                 )                                       )
    25.            
    26.             Array ( -- со вторым параметром, равным id, и третьим true
    27.             id ->[1] => Array (
    28.                             [text] = "abc"
    29.                             ),
    30.                 [2] => Array (
    31.                             [text] = "def"
    32.                             )
    33.                 )  
    34.  
    35.         lastId() - Метод, возвращающий последний вставленный id.
    36.        
    37.         getSimpleAssocArray(string $key, string $value)
    38.        
    39.             $key == "id" && $value == "text"        $key == 0 && $value == "text"
    40.             Array (                             Array (         -- в случае
    41.             id ->[1] = [ "abc"] <- text,                [0] = ["abc"]<- text,
    42.                 [2] = ["def"]                       [1] = ["def"]
    43.             )                                   )
    44.  
    45.         getSimpleArray()                        getValue() 
    46.             Array (                                 mixed value
    47.                 [id] = 1,
    48.                 [text] = "abc"
    49.             )
    50.        
    51.    
    52.    
     
  11. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    имена полей для того, что б подставлять префиксы к таблицам. + у меня есть общий класс-листер для товаров, атрибутов, категорий и тд. Я в него буду только загонять в виде массива поля и таблицу из которой делать выборку, а все остальное он мне сам выведет.

    Класс твой гляну, может че-нить из него почерпну. А вернее уже почерпнул getInstance. А вот передавать настройки в класс глобальными переменными - имхо весьма плохо.

    Как сделать так, что бы при вызове метода класса сначала выполнялся не он, а какой-то другой, а потом уже он?

    То есть есть
    class A
    {
    function a(){}
    function b(){}

    function _f(){}
    }

    $o = new A;
    $o->a(); //а на самом деле выполняется сначала _f, а потом уже a();
     
  12. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    в начале метода a() вызови _f() :)
     
  13. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    дело в том, что нужно передавать значения в _f и не массивом.

    вернее не так. Нужно из 4 методов вынести $argv = func_get_args();
     
  14. kostyl

    kostyl Guest

    чето не врубился вообще....

    Кстати, не хочу раздувать тему аля "А потом надо будет поменять СУБД...", но почему никто не делает обертки прямо наследую от mysqi и обворачивая родные методы? Это че фигово?
     
  15. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    бгыг, удалил свое прошлое сообщение, а тему все равно заметили)
    ну эта, goDB наследует mysqli.

    есть несколько методов:
    PHP:
    1. <?
    2. // ...
    3.     public function insert()
    4.     {
    5.         $argv = func_get_args();
    6.         $this->_query($argv);
    7.         return $this->insert_id;
    8.     }
    9.    
    10.     public function multiQuery()
    11.     {
    12.         $argv = func_get_args();
    13.         $this->_query($argv, true);
    14.         return $this->result;
    15.     }
    16.    
    17.     public function formatQuery()
    18.     {
    19.         $argv = func_get_args();
    20.         return $this->_prepareQuery($argv);    
    21.     }
    22. // ...
    как видно в каждом есть $argv = func_get_args();
    вот это я и хочу как-то оптимизировать.
     
  16. kostyl

    kostyl Guest

    может просто ассоциативный массив?
     
  17. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    не понял
     
  18. kostyl

    kostyl Guest

    ну по твоему варианту нужны в этих методах различное количество параметров передавать? Верно я понимаю. И ты хочеш избавиться от вызова func_get_args(); в каждом. Тогда убери вообще func_get_args(); и передавай в эти методы массивы со значениями которые надо передать.
     
  19. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    так массивы передавать - нифига не удобно. Это мне нужно будет писать array в каждом вызове?

    $db->query(array('SELECT * FROM ?t WHERE id=?i', 'content', $_GET['id']));
    а сейчас так
    $db->query(SELECT * FROM ?t WHERE id=?i', 'content', $_GET['id']);
     
  20. kostyl

    kostyl Guest

    А, та ничего там с func_get_args не надо оптимизировать! Какую ты представляешь оптимизацию? В чем выигрыш? Максимум что я могу представить(сделать это наверно не реально), что func_get_args будет написано один раз... Даже строчек кода останется столько же...
     
  21. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    гг, вообще я оптимизировать методы хотел в феврале этого года) Сейчас июль уже, полет и так нормальный. Вот нужно

    добавить плейсхолдеры вида 3?t, что значит что будет подставлен 3 отправленный параметр. Но это пока не критично и сложновато
     
  22. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    kostyl
    Я так делаю :) Правда я сделал ещё круче - я сделал класс, который может создавать несколько экземпляров mysqli в себе для разных коннекций и доступ по ключевому слову идет к нужной коннекции :)
     
  23. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Psih
    ну, дык
    Database::setInstance($settings, $name = 'db');
    Database::getInstance($name = 'db');

    $settings - массив настроек (хост, база, логин, пароль, включена отладка или нет, использовать отложенное подключение или нет, префикс таблиц)

    задай $name другой и другие настройки - и будет у тебя другое подключение.
     
  24. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Сейчас у таблиц есть префиксы, которые забиты в настройках.
    PHP:
    1. <?
    2. $this->db->query('SELECT * FROM ?t WHERE a=?i' self::TABLE, $_GET['id']);
    как видно, таблицы перечисляются через ?t а потом в конце подставляются.

    Запросы растут. Так делать уже не удобно, начинаю путаться в списках. Какие будут предложения?
    Возможно что-то типа

    PHP:
    1. <?
    2. $this->db->bind(array('main' => self::TABLE))->query('SELECT * FROM :main WHERE a=?i', $_GET['id']);