Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > MySQL using by class


Автор: Opr 19.3.2005, 12:57
Так как мне приходится работать с чужими базами данных и мои программы насыщенны SQL-заросами к бд, то я предпочитаю использовать класс для этой цели...
Вот собственно его и публикую...

В принципе, это еще не конечный класс, а просто постепенно наполняемый, разными (для меня) необходимыми и часто используемыми функциями

Код

class sql_db {
 var $db_connect_id;
 var $query_result;
 var $row = array();
 var $rowset = array();
 var $num_queries = 0;

 // Конструктор класса
 function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true) {
  $this->persistency = $persistency;
  $this->user = $sqluser;
  $this->password = $sqlpassword;
  $this->server = $sqlserver;
  $this->dbname = $database;
  if ($this->persistency) $this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
  else $this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
  if ($this->db_connect_id) {
   if ($database != "") {
    $this->dbname = $database;
    $dbselect = @mysql_select_db($this->dbname);
    if (!$dbselect) {
     @mysql_close($this->db_connect_id);
     $this->db_connect_id = $dbselect;
    }
   }
   return $this->db_connect_id;
  }
  else return false;
 }

 // Окончание работы с БД
 function sql_close() {
  if ($this->db_connect_id) {
   if ($this->query_result) @mysql_free_result($this->query_result);
   $result = @mysql_close($this->db_connect_id);
   return $result;
  }
  else return false;
 }

 // Генерация обычного SQL-запроса
 function sql_query($query = "", $transaction = FALSE) {
  // Удаление любого предыдущего запроса из памяти
  unset($this->query_result);
  if ($query != "") {
    $this->num_queries++;
    $this->query_result = @mysql_query($query, $this->db_connect_id);
  }
  if ($this->query_result) {
   unset($this->row[$this->query_result]);
   unset($this->rowset[$this->query_result]);
   return $this->query_result;
  }
  else return ($transaction == END_TRANSACTION) ? true : false;
 }

 // Генерация SQL-запроса для подсчета количества строк
 function sql_numrows($query_id = 0) {
  if (!$query_id) $query_id = $this->query_result;
  if ($query_id) {
   $result = @mysql_num_rows($query_id);
   return $result;
  }
  else return false;
 }

 // Генерация SQL-запроса для подсчета количества строк полученных во время последнего SQL-запроса
 function sql_affectedrows() {
  if ($this->db_connect_id) {
   $result = @mysql_affected_rows($this->db_connect_id);
   return $result;
  }
  else return false;
 }

 // Генерация SQL-запроса для подсчета количества полей
 function sql_numfields($query_id = 0) {
  if (!$query_id) $query_id = $this->query_result;
  if ($query_id) {
   $result = @mysql_num_fields($query_id);
   return $result;
  }
  else return false;
 }

 // Генерация SQL-запроса для получения имени поля
 function sql_fieldname($offset, $query_id = 0) {
  if (!$query_id) $query_id = $this->query_result;
  if ($query_id) {
   $result = @mysql_field_name($query_id, $offset);
   return $result;
  }
  else return false;
 }

 // Генерация SQL-запроса для получения типа поля
 function sql_fieldtype($offset, $query_id = 0) {
  if (!$query_id) $query_id = $this->query_result;
  if ($query_id) {
   $result = @mysql_field_type($query_id, $offset);
   return $result;
  }
  else return false;
 }

 // Генерация SQL-запроса, возвращающего разультат в виде массива
 function sql_fetchrow($query_id = 0) {
  if (!$query_id) $query_id = $this->query_result;
  if ($query_id) {
   $this->row[$query_id] = @mysql_fetch_array($query_id);
   return $this->row[$query_id];
  }
  else return false;
 }

 // Генерация SQL-запроса, возвращающего разультат в виде многомерного массива
 function sql_fetchrowset($query_id = 0) {
  if (!$query_id) $query_id = $this->query_result;
  if ($query_id) {
   unset($this->rowset[$query_id]);
   unset($this->row[$query_id]);
   while ($this->rowset[$query_id] = @mysql_fetch_array($query_id)) $result[] = $this->rowset[$query_id];
   return $result;
  }
  else return false;
 }

 // Получение следующего ID в таблице, от последнего ID, сгенеренного запросом INSERT
 function sql_nextid() {
  if ($this->db_connect_id) {
   $result = @mysql_insert_id($this->db_connect_id);
   return $result;
  }
  else return false;
 }

 // Освобождение памяти после SQL-запросов
 function sql_freeresult($query_id = 0){
  if (!$query_id) $query_id = $this->query_result;
  if ($query_id) {
   unset($this->row[$query_id]);
   unset($this->rowset[$query_id]);
   @mysql_free_result($query_id);
   return true;
  }
  else return false;
 }

 // Возврат кода и тела ошибки
 function sql_error($query_id = 0) {
  $result["message"] = @mysql_error($this->db_connect_id);
  $result["code"] = @mysql_errno($this->db_connect_id);
  return $result;
 }
}

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