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


Автор: Master 23.4.2004, 15:23
В классе используются 3 функции:
1) соединение с БД
2) Запрос к БД
3) Вывод результата SQL запроса

класс облегчет вам работы с MySQL

Код
<?php

class mysql {

   var $dbhost="localhost";
   var $dbport="3306";
   var $dblogin="test";
   var $dbpass="";
   var $dbname="test";

   var $error_reporting = 1;
   var $error_notice = '<B>Ошибка MySQL:</B><BR>';

   function connect() {
       if (@mysql_connect($this->dbhost, $this->dblogin, $this->dbpass)) {
           if (@mysql_select_db($this->dbname)) {
               return true;
           } else {
               if ($this->error_reporting == 1) {
                   echo $this->error_notice.'<B>Номер ошибки:</B> '.mysql_errno().'<BR><B>Описание ошибки:</B> '.mysql_error().'<BR><BR>';
               }
               return false;
           }
       } else {
           if ($this->error_reporting == 1) {
               echo $this->error_notice.'<B>Номер ошибки:</B> '.mysql_errno().'<BR><B>Описание ошибки:</B> '.mysql_error().'<BR><BR>';
           }
           return false;
       }
   }

   function query($query) {
       $result = @mysql_query($query);
       if ($result) {
           return $result;
       } else {
           if ($this->error_reporting == 1) {
               echo $this->error_notice.'<B>Номер ошибки:</B> '.mysql_errno().'<BR><B>Описание ошибки:</B> '.mysql_error().'<BR><BR>';
               echo '<B>Запрос:</B><BR><TEXTAREA cols=50 rows=5>'.$query.'</TEXTAREA>';
           }
           return false;
       }
   }


   function show($query) {
       echo '<TABLE border=0 cellspacing=1 cellpadding=3 width=100% bgcolor=#000000>';
       while ($table = mysql_fetch_assoc($query)) {
           if (!isset($show_rows)) {
               echo '<TR bgcolor=#f0f0f0>';
               foreach ($table as $key=>$value) {
                   echo '<TD>'.htmlspecialchars($key).'</TD>';
               }
               echo '</TR>';
               $show_rows = 1;
           }
           echo '<TR bgcolor=#ffffff>';
           foreach ($table as $key=>$value) {
               echo '<TD>'.htmlspecialchars($value).'</TD>';
           }
           echo '</TR>';
       }
       echo '</TABLE>';
   }


}

?>

Автор: Dr.Death 23.4.2004, 15:45
У меня есть мой собственный.
А зачем делать show? Мне кажется лучше сделать отдельные функции типа result,fetch_array.

Автор: Dexter 23.4.2004, 16:37
Я использую класс от IPB.

Автор: IZ@TOP 23.4.2004, 16:39
У меня свой wink.gif Но думаю оторавть от IPB'шки biggrin.gif

Автор: AlexVN 23.4.2004, 19:39
"Класс", в смысле тип для создания объектов :-)
Для простого вывода результата SQL.
На мой взгляд, эго можно сделать лучше, если учесть следующие моменты:
* испольховать unbuffered query - все равно до конца данных бежим.
* скрипт, использующий этот класс, должен иметь вохможность переопределить поведение при возникновении ошибки.
* настраивать HTML в show - хочу "зебру" - полоска белая, полоска серая.

А вообще, если тебе подходит - самое то и есть.

Автор: arial 24.4.2004, 20:45
А я использую http://pear.php.net/package/DB/.
Преимущества:
1. Хорошая документация;
2. Стабильная работа;
3. Независимость от типа DB.
Добавлено @ 20:50
Да и вообще, зачем приведенный многоуважаемым Masterом класс нужен? Где его можно применить?

Автор: Гость_alexandoros 24.4.2004, 21:20
А чем Вам собственно PHPLib не нравится?

Автор: alexandoros 24.4.2004, 21:40
я вообще люблю все стандартное использовать, чтоб потом увидев чей-нибудь чужой код(тоже стандартный) не делал глаза квадратные. А потом в пхплибе есть еще афигенная фишка темплейты - практически полное отделение пхп от хтмл. Скачайте(с сайта ПХП ес-нно) и почитайте доки по класам DB_Mysql and Template. Не пожалеете.

Автор: Master 26.4.2004, 13:39
Ну вот... целых 20 минут потратил на это творчество, а его и не оценили по достоинству sad.gif
надо будет посмотреть IPB и Pear по этой теме...

Автор: Vaulter 26.4.2004, 14:34
юзаю vbulletinовский класс немного приписАнный мною...

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