Библиотеки, Классы, полезные функции.

Discussion in 'PHP' started by Sharky, 29 Sep 2009.

  1. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    Выкладываем полезные классы, библиотеки, для облегчения жизни. Так же в теме принимаются просьба на поиски библиотек/классов. Начну первый:

    MultiCurl class library
    Ссылки по классу:
    http://www.weblancer.net/users/tvv/portfolio/231798.html
    http://code.google.com/p/multicurl-library/downloads/list
     
    #1 Sharky, 29 Sep 2009
    Last edited by a moderator: 14 Dec 2009
    2 people like this.
  2. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    подскажите perl либу для работы с фтп через socks5
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ftp://ftp.linux.it/debian/pool/main/libi/libio-socket-socks-perl/libio-socket-socks-perl_0.1.orig.tar.gz
     
  4. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Т.к. тема не пользовалась спросом, немного изменил её направление, изменения в первом посте. Продолжу:

    Класс для постраничного вывода из БД:

    PHP:
    <?php 
    class Paging 

    private 
    $page_size 10
    private 
    $link_padding 10
    private 
    $page_link_separator ' '
    private 
    $next_page_text 'следующая →'
    private 
    $prev_page_text '← предыдущая'
    private 
    $result_text_pattern 'Показано с %s по %s из %s'
    private 
    $page_var 'p'

    private 
    $db
    private 
    $q
    private 
    $total_rows
    private 
    $total_pages
    private 
    $cur_page

    public function 
    __construct($db$q=''$page_var='p'

        
    $this->db $db
        if (
    $q$this->set_query($q); 
        
    $this->page_var $page_var
        
    $this->cur_page = isset($_GET[$this->page_var]) && (int)$_GET[$this->page_var] > ? (int)$_GET[$this->page_var] : 1


    public function 
    set_query($q

        
    $this->$q


    public function 
    set_page_size($page_size

        
    $this->page_size abs((int)$page_size); 


    public function 
    set_link_padding($padding

        
    $this->link_padding abs((int)$padding); 


    public function 
    get_page($q=''

        if (
    $q$this->set_query($q); 

        
    $r $this->db->query$this->query_paging($this->q) ); 
        
    $this->total_rows array_pop($this->db->query('SELECT FOUND_ROWS()')->fetch_row()); 

        if (
    $this->page_size !== 0$this->total_pages ceil($this->total_rows/$this->page_size); 
         
        if (
    $this->cur_page $this->total_pages
        { 
            
    $this->cur_page $this->total_pages
            if ( 
    $this->total_pages $r $this->db->query$this->query_paging($this->q) ); 
        } 
         
        return 
    $r


    public function 
    get_result_text() 

        
    $start = (($this->cur_page-1) * $this->page_size)+1
        
    $end = (($start-1+$this->page_size) >= $this->total_rows)? $this->total_rows:($start-1+$this->page_size); 

        return 
    sprintf($this->result_text_pattern$start$end$this->total_rows); 


    public function 
    get_page_links() 

        if ( !isset(
    $this->total_pages) ) return ''

        
    $page_link_list = array(); 

        
    $start $this->cur_page $this->link_padding
        if ( 
    $start $start 1
        
    $end $this->cur_page $this->link_padding-1
        if ( 
    $end $this->total_pages $end $this->total_pages

        if ( 
    $start )  $page_link_list[] = $this->get_page_link$start-1$start '...' '' ); 
        for (
    $i=$start$i <= $end$i++)  $page_link_list[] = $this->get_page_link$i ); 
        if ( 
    $end $this->total_pages $page_link_list[] = $this->get_page_link$end +1$end == $this->total_pages '' '...' ); 
        if ( 
    $end <= $this->total_pages $page_link_list[] = $this->get_page_link$this->total_pages ); 

        return 
    implode($this->page_link_separator$page_link_list); 


    public function 
    get_next_page_link() 

        return isset(
    $this->total_pages) && $this->cur_page $this->total_pages $this->get_page_link$this->cur_page 1$this->next_page_text ) : ''


    public function 
    get_prev_page_link() 

        return isset(
    $this->total_pages) && $this->cur_page $this->get_page_link$this->cur_page 1$this->prev_page_text ) : ''


    private function 
    get_page_link($page$text=''

        if (!
    $text)    $text $page

        if (
    $page != $this->cur_page
        { 
            
    $reg '/((&|^)'.$this->page_var.'=)[^&#]*/'
            
    $url '?'.( preg_match$reg$_SERVER['QUERY_STRING'] ) ? preg_replace($reg'${1}'.$page$_SERVER['QUERY_STRING']) : ( $_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'].'&' '' ).$this->page_var.'='.$page); 
            return 
    '<a href="'.$url.'">'.$text.'</a>'
        } 
        return 
    '<span>'.$text.'</span>'


    private function 
    query_paging() 

        
    $q $this->q

        if (
    $this->page_size != 0
        { 
            
    //calculate the starting row 
            
    $start = ($this->cur_page-1) * $this->page_size
            
    //insert SQL_CALC_FOUND_ROWS and add the LIMIT 
            
    $q preg_replace('/^SELECT\s+/i''SELECT SQL_CALC_FOUND_ROWS '$this->q)." LIMIT {$start},{$this->page_size}"
        } 

        return 
    $q


    ?>
    Ссылки по классу:
    https://forum.antichat.ru/showpost.php?p=1739576&postcount=2
    http://www.tigir.com/paging.htm
     
  5. life_is_shit

    life_is_shit Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    300
    Likes Received:
    149
    Reputations:
    19
    а можно мне хоть глазком глянуть на нормальный Doctrine ORM для codeigniter? :(
    просто мечтаю в поллюционных снах.
     
  6. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Класс для работы с MySQL:
    PHP:
    <?php

    class db
    {
        var 
    $db_id false;
        var 
    $query_num 0;
        var 
    $query_list = array();
        var 
    $mysql_error '';
        var 
    $mysql_error_num 0;
        var 
    $MySQL_time_taken 0;
        
        function 
    connect($db_user$db_pass$db_name$db_location 'localhost'$show_error=1)
        {
            if(!
    $this->db_id = @mysql_connect($db_location$db_user$db_pass))
            {
                if(
    $show_error == 1$this->display_error(mysql_error(), mysql_errno());
                else                 return 
    false;
            } 

            if(!@
    mysql_select_db($db_name$this->db_id))
            {
                if(
    $show_error == 1$this->display_error(mysql_error(), mysql_errno());
                else                 return 
    false;
            }

            return 
    true;
        }
        
        function 
    query($query$show_error=true)
        {

            if(!
    $this->db_id$this->connect(DBUSERDBPASSDBNAMEDBHOST);
            
            if(!(
    $result mysql_query($query$this->db_id) ))
            {
                
    $this->mysql_error mysql_error();
                
    $this->mysql_error_num mysql_errno();
                
                if(
    $show_error$this->display_error($this->mysql_error$this->mysql_error_num$query);
            }
            
            
    $this->query_num ++;

            return 
    $result;
        }
        
        function 
    get_row($query_result)
        {
            return 
    mysql_fetch_assoc($query_result);
        }

        function 
    get_array($query_result)
        {
            return 
    mysql_fetch_array($query_result);
        }
        
        
        function 
    super_query($query$multi false)
        {
            if(!
    $this->db_id$this->connect(DBUSERDBPASSDBNAMEDBHOST);

            if(!
    $multi) return $this->get_row($this->query($query));
            else
            {
                
    $query_result $this->query($query);
                
                
    $rows = array();
                while(
    $row $this->get_row($query_result))
                {
                    
    $rows[] = $row;
                }
                
                return 
    $rows;
            }
        }
        
        function 
    num_rows($query_result)
        {
            return 
    mysql_num_rows($query_result);
        }
        
        function 
    insert_id()
        {
            return 
    mysql_insert_id($this->db_id);
        }

        function 
    get_result_fields($result)
        {
            while (
    $field mysql_fetch_field($result))
            {
                
    $fields[] = $field;
            }
            
            return 
    $fields;
        }

        function 
    close()
        {
            @
    mysql_close($this->db_id);
        }
        
        function 
    display_error($error$error_num$query '')
        {
            if(
    $query)
            {
                
    $query preg_replace("/([0-9a-f]){32}/""********************************"$query);
                
    $query_str "$query";
            }
            
            echo 
    '<?xml version="1.0" encoding="iso-8859-1"?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <title>MySQL Fatal Error</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <style type="text/css">
            <!--
            body {
                font-family: Verdana, Arial, Helvetica, sans-serif;
                font-size: 10px;
                font-style: normal;
                color: #000000;
            }
            -->
            </style>
            </head>
            <body>
                <font size="4">MySQL Error!</font> 
                <br />------------------------<br />
                <br />
                
                <u>The Error returned was:</u> 
                <br />
                    <strong>'
    .$error.'</strong>

                <br /><br />
                </strong><u>Error Number:</u> 
                <br />
                    <strong>'
    .$error_num.'</strong>
                <br />
                    <br />
                
                <textarea name="" rows="10" cols="52" wrap="virtual">'
    .$query_str.'</textarea><br />

            </body>
            </html>'
    ;
            
            exit();
        }
    }

    ?>
     
  7. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    b3, зверюга )
    Никаких проверок, исключений, никакого ООП, просто обертка стандартных устаревших функций для работы с MySQL своими функциями )
     
  8. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    http://highcharts.com/
    JS-библиотека для построения графиков/диаграмм и прочего-прочего со всякими вкусностями =)
    Плотно не юзал, но выглядит удобоваримо.
     
    1 person likes this.
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    :D исправлюсь)) Просто перенес с другого раздела тему, и нужно было апнуть =) Но кстати данным классом пользуюсь =) Для тех кому нужен "безопасный" класс могу посоветовать выдрать с DLE, там неплохой =)
     
    1 person likes this.
  10. Shadow_p1raT

    Shadow_p1raT Elder - Старейшина

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    уважаемый nerezus,не могли бы вы выложить настоящий класс для работы с mysql(т.е c OOП,исключениями,проверками)
    P.S хочется глянуть )
     
  11. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    in b4 Zend_Db
     
  12. life_is_shit

    life_is_shit Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    300
    Likes Received:
    149
    Reputations:
    19
    b3, джедай хуле=)
    давно пора (по-доброму) переходить на orm или хотя бы active record.
     
  13. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Не вопрос
     
  14. joks

    joks Member

    Joined:
    27 Sep 2008
    Messages:
    16
    Likes Received:
    14
    Reputations:
    0
    PHP:
    jClasspWeb (Parser Web) - класс для работы с сайтами[/b]

    Предисловаие:

    [
    I]Начинаю потихоньку выкладывать свои классы в этом разделеОни будут идти с пометкой jClassДумаю многим кодерам они пригодяться. [/I]

    [
    COLOR=LemonChiffon][CENTER][SIZE=4]jClasspWeb[/SIZE][/CENTER][/COLOR]

    Это класс для работы с сайтами в скриптах PHPОн очень удобен для создания всевозможных авторегистраторовпарсеровспамеровграберовбрутфорсов итпОснован на [B]cURL[/B], имеет много полезных возможностейтаких как:
    [list]
    [*]
    Быстрая загрузка страниц методом GET и POST
    [*]Парсинг HTML
    [*]Нахождение любого HTML элемента и получения его аттрибутов (в.т.чinputs)
    [*]
    Автоматическое слежение за cookies
    [*]Парсер заголовков
    [*]Автоматическая загрузка каритинок
    [*]Разгадка капчи одной строкой кодачерез Antigate
    [*]Ну и еще много чего интересного..
    [/list] 

    [
    URL=http://files.xxxgeneration.ru/files/2010_04_22/c52fb9/pWeb-1.3.rar]Скачать pWeb (версия 1.3) + документация и примеры[/URL] ([I][SIZE=1]http://files.xxxgeneration.ru/files/2010_04_22/c52fb9/pWeb-1.3.rar[/SIZE][/I])


    С помощью данного скрипта даже новичкам будет легко писать разные скрипты для интеграции с сайтамиуже не говоря о томкак он поможет профессионалам своего делаВ нем главное разобратьсяЭто как IDEс первого взгляда кажется как все сложно и непривычноа потом не можешь без нее жить

    Я использую этот класс в каждом своем проектеработающем с сайтамиПредоставляю и вам такую возможность.

    [
    SIZE=3][I]Разрешено использовать класс в любых ваших проектахтакже продавать его как часть проектаОдно условие сохранение копирайта. [/I][/SIZE]

    Если класс вам НЕ понравилсясчитаете его бажным итпможете не писать здесь об этома просто им не пользоватьсяЕсли нашли какуюто багуто исправьте ее сами и выложите сюда пофиксеную версиюБуду признателенЭтот класс прошел много испытаний в тяжелых условиях и исправлено большое кол-во баг.

    Скоро может выложу еще пару готовых примеров его использованияПока работы много.

    [
    SIZE=2][COLOR=Green][B]by m0HzeНа отдельную тему не тянетклади сюдаФлуд почистилчто бы больше такого не было.[/B][/COLOR][/SIZE]
     
    #14 joks, 22 Apr 2010
    Last edited by a moderator: 22 Apr 2010
    2 people like this.
  15. Gaus

    Gaus Member

    Joined:
    8 Feb 2009
    Messages:
    136
    Likes Received:
    36
    Reputations:
    3
    Подскажите Perl класс для работы с SSL через Socks
     
  16. F0R357

    F0R357 New Member

    Joined:
    13 Nov 2005
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Остался у кого-нить? перезалейте плиз?
     
  17. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    Ф-ция водяного знака

    PHP:
    function watermark($file$watermark) {
           if(empty(
    $file) | empty($watermark)) return false;
           
    $wh getimagesize($watermark);
           
    $fh getimagesize($file);
           
    $rwatermark imagecreatefromjpeg($watermark); //Иногда может понадобиться наложить прозрачный png, тогда заменяем функцию на imagecreatefrompng
           
    $rfile imagecreatefromjpeg($file);
           
    imagecopy($rfile$rwatermark$fh[0] - $wh[0], $fh[1] - $wh[1], 00$wh[0], $wh[1]);
           
    imagejpeg($rfile$file'100');
           
    imagedestroy($rwatermark);
           
    imagedestroy($rfile);
           return 
    true;
    }
    Использовать так:
    PHP:
    watermark('1.jpg''2.jpg');
    1.jpg - исходная картинка
    2.jpg - водяной знак
     
  18. php_casper

    php_casper New Member

    Joined:
    6 Jun 2010
    Messages:
    64
    Likes Received:
    1
    Reputations:
    1
    Давно видел, кто-то вылаживал бесплатный класс для вконтакте. Ткните или выложите сюда пожалуйста.
     
  19. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    ищу рабочий лёгкий (только основные функци, такие как авторизация, приём, отправка сообщений) класс для работы с xmpp
     
  20. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    Мой класс для работы с MySQL

    PHP:
    <?php

    class DB {
        const 
    FETCH_ASSOC 1;
        const 
    FETCH_NUM 2;
        const 
    FETCH_BOTH 3;
        const 
    FETCH_OBJ 4;
        
        private 
    $query "";
        private 
    $result false;
        private 
    $connection;
        private 
    $errors = array(); // стек для хранения ошибок

        /*
         * конструктор класса DB
         * @param $server строка хост
         * @param $username строка имя пользователя
         * @param $password строка пароль пользователя
         * @param $database_name строка имя базы данных
         *
         */
        
    public function __construct($server$username$password$database_name) {
            try {
                
    $this->connection = @mysql_connect($server$username$password);
                if (
    $this->connection === false) {
                    throw new 
    Exception("Не удается подключиться к серверу MySQL по адресу '{$server}'");
                }
                else {
                    if (@!
    mysql_select_db($database_name$this->connection)) {
                        throw new 
    Exception("Неизвестная база данных '{$database_name}'");
                    }
                }
            }
            catch (
    Exception $e) {
                
    // echo $e->getMessage()."<br>";
                
    $this->errors[] = $e->getMessage();
            }
        }
        
        
    // возвращает строку с сообщением об ошибке либо false в случае их отсутствия
        
    public function getError() {
            
    $e array_shift($this->errors); // берём первый элемент из стека
            
    if (is_null($e)) {
                return 
    false;
            }
            else {
                return 
    $e;
            }
        }
        
        
    // получить массив ошибок
        
    public function getErrors() {
            return 
    $this->errors;
        }
         
        public function 
    setQuery($query) {
            
    $this->query $query;
            return 
    $this;
        }
         
        
    /*
         * метод для отправки запроса MySQL
         * @param $query строка запрос
         * @return $this указатель
         *
         */
        
    public function exec() {     
            
    $this->result = @mysql_query($this->query$this->connection);
            if (!
    $this->result) {
                
    $this->errors[] = mysql_error();
            }   
            return 
    $this;
        }
        
        public function 
    query($query) {     
            
    $this->result = @mysql_query($query$this->connection);
            if (!
    $this->result) {
                
    $this->errors[] = mysql_error();
            }   
            return 
    $this;
        }
        
        public function 
    getResult() {
            return 
    $this->result;
        }
        
        
    /*
         * данный метод отправляет запрос и обрабатывает результат возвращая 
         * массив работает только с оператором select
         * @param $sql строка SQL-команда
         * @param $flag константа (DB::FETCH_NUM|DB::FETCH_ASSOC|DB::FETCH_BOTH|DB::FETCH_OBJ)
         * @return $rows массив
         *
         */
         
    public function getRows($sql$flag 3) {
            
    $res = @mysql_query($sql$this->connection);
            if (
    $res) {
                
    $as_obj false;
                if (
    $flag == self::FETCH_OBJ) {
                    
    $as_obj true;
                    
    $flag 1;
                }
                
    $rows = array();
                while (
    $row mysql_fetch_array($res$flag)) {
                    
    // конвертируем массив в объект, если надо
                    
    if ($as_obj) {
                        
    $row = (object) $row;
                    }
                    
    $rows[] = $row;
                }
                return 
    $rows;
            }
            
    $this->errors[] = mysql_error();
            return 
    false;
         }
        
        
    /*
         * метод для экранирования спецсимволов, используемых в SQL
         * @param $str строка строка, которую необходимо экранировать
         * @return строка
         *
         */
        
    public function escape($string) {
            return 
    mysql_real_escape_string($string);
        }

        
    /*
         * метод возвращает последний вставленный id
         * @return число
         *
         */
        
    public function lastInsertId() {
            return 
    mysql_insert_id($this->connection);
        }
        
        private function 
    prepareParams($params) {
            if (
    is_object($params)) { // объект конвертируем в ассоциативный массив
                
    $params = (array) $params;
            }
            foreach (
    $params as &$v) {
                if (
    is_int($v) or is_float($v)) {
                    continue;
                }
                else if (
    is_null($v)) {
                    
    $v "NULL";
                }
                else if (
    is_bool($v)) {
                    
    $v = ($v) ? "TRUE" "FALSE";
                }
                else { 
    // остальные типы данных будут приведены к строке
                    
    $v "'{$v}'";
                }
            }
            return 
    $params;
        }
        
        
    /*
         * методы для конструирования простых SQL-запросов
         *
         */
        
    public function select($what$table_name) {
            
    $this->query "select {$what} from {$table_name}";
            return 
    $this;
        }
        
        
    // аргументы: 1) строка, название таблицы; 2) массив либо объект, вставляемый ряд, где ключ массива(свойство объекта) - имя колонки
        // возможна передача простого массива
        
    public function insert($table_name$params) {
            
    $params $this->prepareParams($params);
            
    $columns array_keys($params);
            
    $values array_values($params);
            unset(
    $params);
            
    $is_assoc = (is_string($columns[0])) ? true false
            
    $this->query "insert into `{$table_name}`";
            
    // если массив ассоциативный
            
    if ($is_assoc) {
                foreach (
    $columns as &$v) {
                    
    $v "`{$v}`";
                }
                
    $this->query.= " (".implode(", "$columns).")";
            }
            
    $this->query.= " values(".implode(", "$values).")";
            return 
    $this;
        }
        
        public function 
    update($table_name$params) {
            
    $params $this->prepareParams($params);
            
    $set = array();
            foreach (
    $params as $k => $v) {
                
    $set[] = "`{$k}` = {$v}";
            }   
            
    $this->query "update `{$table_name}` set ".implode(", "$set);
            return 
    $this;
        }
        
        public function 
    delete($table_name) {
            
    $this->query "delete from `{$table_name}`";
            return 
    $this;
        }
        
        public function 
    where($condition) {
            
    $this->query $this->query." where {$condition}";
            return 
    $this;
        }
        
        public function 
    limit($x$y) {
            
    $this->query $this->query." limit {$x}{$y}";
            return 
    $this;
        }
        
        public function 
    orderBy($column_name$key_word "asc") {
            
    $this->query $this->query." order by `{$column_name}{$key_word}";
            return 
    $this;
        }
        
        
    // возвращает сформированную строку запроса
        
    public function getQuery() {
            return 
    $this->query;
        }

        
    // обработать результат запроса и вернуть одномерный массив либо объект
        
    public function fetch($flag 3) {
            if (
    $this->result === false) {
                return 
    $this->result;
            }
            else {  
                if (
    $flag == self::FETCH_OBJ) {
                    return (object) 
    mysql_fetch_array($this->result1);
                }
                return 
    mysql_fetch_array($this->result$flag);
            }
        }
        
        
    // получаем массив массивов или объектов
        
    public function fetchAll($flag 3) { 
            if (
    $this->result === false) { 
                return 
    $this->result
            } 
            else { 
                if (
    $flag == self::FETCH_OBJ) {
                    
    $as_obj true;
                    
    $flag 1;
                }
                
    $rows = array(); 
                
    $n mysql_num_rows($this->result); 
                for (
    $m 0$m $n; ++$m) {
                    
    $row mysql_fetch_array($this->result$flag);
                    
    $rows[$m] = ($as_obj) ? (object) $row $row
                } 
                return 
    $rows
            } 
        }

        public function  
    __destruct() {
            @
    mysql_close($this->connection);
        }
    }

    ?>

    Пример использования:

    PHP:
    <?php

    $host 
    "localhost";
    $user "root";
    $pass "";
    $dbname "test";
    require 
    "classes/db.class.php";
    $db = new DB($host$user$pass$dbname);
    echo 
    "<pre>";
    $db->query(
        create table `users` (
            `id` int unsigned not null auto_increment primary key, 
            `name` varchar(255) not null, 
            `password` varchar(255) not null, 
            `date` int not null
        ); 
    "
    );

    $User = new stdClass;
    $User->id null;
    $User->name "admin";
    $User->password md5("123");
    $User->date time();
    $db->insert("users"$User)->exec();
     
    // можем посмотреть sql-запрос созданный конструктором 
    echo $db->getQuery()."\r\n"// insert into `users` (`id`, `name`, `password`, `date`) values(NULL, 'admin', '202cb962ac59075b964b07152d234b70', 1294426918)
    var_dump($db->getResult()); // true, можем проверить добавлена ли запись
    var_dump($db->getErrors()); // можем посмотреть ошибки так
    // либо так
    while ($e $db->getError()) {
        echo 
    $e."\r\n";
    }

    $rows $db->getRows(" select * from `users` "DB::FETCH_OBJ);
    var_dump($rows);
    /*
    array(1) {
      [0]=>
      object(stdClass)#3 (4) {
        ["id"]=>
        string(1) "1"
        ["name"]=>
        string(4) "test"
        ["password"]=>
        string(32) "098f6bcd4621d373cade4e832627b4f6"
        ["date"]=>
        string(10) "1294424231"
      }
    }
    */

    ?>

     
    #20 necroleptick, 7 Jan 2011
    Last edited: 24 Mar 2013