Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Класс для работы с MYSQL


Автор: N1k0laj_BY 6.2.2007, 23:47
Посмотрите на мой класс для работы с БД MySQL.
Имеет ли смысл его использовать(мне им удобно пользоваться сложно ошибиться в синтаксисе запроса)? Какие ошибки. В общем критикуйте.
Код

 <?PHP
class mDB
{
   var $hostname, $password, $username, $dbName;
   var $view_sql = false;
   var $view_error = false;
   var $def_error = false;

/*=====================================================================================
                             Функции
=======================================================================================*/
  //подключение к БД
  function mDB($hostname, $password, $username, $dbName)
 {
    $this->hostname =$hostname;
    $this->password = $password;
    $this->username = $username;
    $this->dbName = $dbName;
    /* создать соединение */ 
    mysql_connect($this->hostname,$this->username,$this->password) OR DIE($this->error());
    /* выбрать базу данных. Если произойдет ошибка - вывести ее */ 
    mysql_select_db($dbName) or die($this->error()); 
  }// end conectDB
  
  //выбор БД
  function sel_db($dbName)
  {
    $this->dbName = $dbName;
    mysql_select_db($dbName) or die($this->error()); 
  }
  /*====================================================================================
        Функции отвечающие за вывод ошибок и текстов запросов
   ==================================================================================*/
  //выводить ошибки или нет
  function set_view_error($view = true)
  {
    $this->view_error = $view;
  }
  //выводить текст запроса или нет
  function set_view_sql($view = true)
   {
    $this->view_sql = $view;
   }
  //выводит ошибки запроса
  private function error()
  {
    if ($this->view_error)
       return mysql_error();
    else return $this->def_error;   
    
  }
  //выводит сам запрос к БД
  private function view_sql($sql)
  {
    if ($this->view_sql)
       echo $sql;
  }
  //устанавливает какое сообщение выводить вслучае ошибки
  function set_def_error($error)
  {
    $this->def_error = $error;
  }
  /*============================================================================
       Функции запросов к БД
  ===============================================================================*/
  // запрос SELECT
  function sel($pole,$table,$where='',$limit='',$order='',$arr = false)
  {
        
        if ($where!='')
           $where = 'where('.$where.')';
        if ($limit != '')
            $limit = 'LIMIT '.$limit.'';
        if ($order != '')
            $order = 'ORDER BY '.$order;
        $sql = "SELECT $pole FROM $table $where $order $limit";
        $result = mysql_query($sql) or die($this->error() );
        
        if (!$arr)
          return $result;
        else //если нажо сразу сформировать массив данных, когда запрос выбирает только одну строку
        {
           $array = mysql_fetch_array($result) or die($this->error());
            return $array;
        }//else
    }//end sel
    
    //последнее сгенерированное  
    function last_insert_id()
    {
        $result = mysql_fetch_array(mysql_query('SELECT LAST_INSERT_ID()'));
        return $result[0];
        
    }
    
    function del($table,$where)
    {
      $sql = "DELETE FROM $table WHERE ($where)";
      
      mysql_query($sql) or die ($this->error());
    }
     //обновление записей
     function upd($table,$pole,$where ='')
     {
      if ($where!='')
          $where = 'where ('.$where.')';
          $sql = "UPDATE $table SET $pole $where ";
          mysql_query($sql) or die($this->error());
          
    }
    //вставка записи
    function ins($table,$pole,$value)
    {
       $sql = 'INSERT INTO '.$table.'('.$pole.') values('.$value.')';
      
       $result = mysql_query($sql) or die($this->error());
    }
   //проверка авторизации
   function avt($table,$login,$pass){
      $sql = 'SELECT id FROM '.$table.' where(name="'.$login.'" and pass="'.$pass.'")';
      $result = mysql_query($sql) or die($this->error());
      if (mysql_num_rows($result)>0) return true;
      else return false; 
   }
   //проверка существования 
   function chek($table,$p1,$v1,$p2='',$v2=''){
    if ($p2 == '')
    {
        $and = '';
    } else $and = 'and '.$p2.'="'.$v2.'"';
     $sql = "SELECT id FROM $table where($p1='$v1' $and)";
     $result = mysql_query($sql) or die($this->error());
     if (mysql_num_rows($result)>0) $a=true; else $a = false; 
     return $a; 
   }
   //подсчет количества записей
   function num($table,$pole,$where=''){
     if($where!='')
        $where = 'where('.$where.')';
      $sql = "SELECT COUNT($pole) FROM $table $where ";
      $result = mysql_query($sql) or die($this->error());
      $arr = mysql_fetch_array($result);
      return $arr[0];
   }
  }//clacc mDB
  
  
  ?>

Автор: -=Ustas=- 7.2.2007, 01:01
Скажи ка, что тут "function avt" делает?! И какое ты видишь отношение такой сущности как "пользователь" (в частности его действие авторизации) к объекту БД?  smile 

Автор: N1k0laj_BY 7.2.2007, 01:12
Цитата(-=Ustas=- @ 7.2.2007,  01:01)
Скажи ка, что тут "function avt" делает?! И какое ты видишь отношение такой сущности как "пользователь" (в частности его действие авторизации) к объекту БД?  smile

Добавил в этот класс так как часто пользуюсь такой авторизацией.

Автор: Mal Hack 7.2.2007, 22:15
Вы про PDO слышали? Рекомендую почитать, позволит сосредоточить усилия, на более интересных вещах.

Автор: SamDark 8.2.2007, 09:37
По-моему лучшее творение в этой области: http://dklab.ru/lib/DbSimple/

Автор: Opik 8.2.2007, 12:27
N1k0laj_BY, 
Имхо имеет смысл посмотреть в сторону PDO или mysqli, чем изобретать велосипед.

Автор: N1k0laj_BY 9.2.2007, 00:41
Буду лучше использовать PDO, все равно чтобы мой класс использовать в любом проекте, когда применяются сложные запросы его придется сильно расширять, что займет много лишнего времени. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)