Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL using by class 
:(
    Опции темы
Opik
Дата 19.3.2005, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

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



Так как мне приходится работать с чужими базами данных и мои программы насыщенны 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;
 }
}

PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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