|
sweet15w ↓
|
 |
|
27 Октябрь, 2011, 02:37:11
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: -1
Сообщений: 104 Сила слова: -0.96
|
начало:
class SQL {
static $sql_id = 0;
protected $sql_host;
protected $sql_user;
protected $sql_password;
protected $sql_database;
function __construct () {
if( SQL:: $sql_id == 0 ) {
$this-> set_sql_parametrs();
SQL:: $sql_id = mysql_connect($this-> sql_host, $this-> sql_user, $this-> sql_password) or die ("can't connect to mysql");
mysql_query("create database $this->sql_database");
mysql_select_db($this-> sql_database) or die ("can't select database");
date_default_timezone_set ("Europe/Moscow") or die ("can't set default timesone");
}
}
function __destruct () {
if( SQL:: $sql_id != 0 ){
mysql_close( SQL:: $sql_id );
SQL:: $sql_id = 0;
}
}
function set_sql_parametrs () { /* метод установки параметров соединения */
$this-> sql_host= "localhost";
$this-> sql_user= "root";
$this-> sql_password= "";
$this-> sql_database= "wwwoopru";
}
}
пока все нормом идет?? )
особенности:
в конструкторе при создании объекта проверяется, было ли установлено соединение ранее, если не было, то устанавливается, затем вызывается метод установки параметров соединения
параметры соединения должны браться из файла конфига (пока жестко присвоил)
деструктор проверяет было ли разорвано соединение, если не было, то разрывает его
ваши предложения, поправки, пожелания?
p.s. не орем, пожалуйста про sqli, pdo и т.п. эти все рукожопства придуманы для ознакомления... практики
|
|
|
|
|
Записан
|
отвечаю не в тему... за то редко...
|
|
|
|
phpdude ↓
|
 |
|
27 Октябрь, 2011, 03:18:27 , спустя 41 минуту 16 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: 20790 Сила слова: 1.66
|
хуйня Спустя 46 секунд добавил хотя бы потому что настрйоки конекта к базе должны браться из конфигов а в класс передаваться а не хардкорно записаны в классе. чтобы поменять настройки мне чо - надо твой класс унаследовать и переопределить параметры соединения? xDDDDDDDDDDD
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
arvitaly ↓
|
 |
|
27 Октябрь, 2011, 04:16:52 , спустя 58 минут 25 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 5
Сообщений: 282 Сила слова: 1.77
|
SQL::$sql_id = mysql_connect($this->sql_host,$this->sql_user,$this->sql_password) or die ("can't connect to mysql");
ужссссс, изучайте исключения Спустя 1 минуту 9 секунд добавил ахахах
каким боком date_default_timezone_set("Europe/Moscow") в классе SQL
|
|
|
|
|
Записан
|
|
|
|
|
master ↓
|
 |
|
27 Октябрь, 2011, 04:26:08 , спустя 9 минут 16 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Квадратов сколько видишь ты?
Группа: Джедаи Карма: 44
Сообщений: 2080 Сила слова: 2.12
|
пока что хуйня, самая мякотка которой в том, что когда ты начнёшь использовать класс ты сам будешь по полчаса втыкать "блять, как его использовать-то?".
напиши сначала пример использования своего класса, а потом по интерфейсу напишешь начинку
|
|
|
|
|
Записан
|
|
|
|
|
Ivan ↓
|
 |
|
27 Октябрь, 2011, 07:20:48 , спустя 2 часа 54 минуты 40 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 27
Сообщений: 1366 Сила слова: 1.98
|
>parametrs
parametres (правило обозначения множественных чисел в англ. языке)
|
|
|
|
|
Записан
|
|
|
|
|
master ↓
|
 |
|
27 Октябрь, 2011, 07:56:18 , спустя 35 минут 30 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Квадратов сколько видишь ты?
Группа: Джедаи Карма: 44
Сообщений: 2080 Сила слова: 2.12
|
params
|
|
|
|
|
Записан
|
|
|
|
|
Абырвалг ↓
|
 |
|
27 Октябрь, 2011, 08:10:18 , спустя 14 минут
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
>parametrs
parametres (правило обозначения множественных чисел в англ. языке)
ву-ха-ха, а вот и хуй. parameters
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
Ivan ↓
|
 |
|
27 Октябрь, 2011, 09:32:16 , спустя 1 час 21 минуту 58 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 27
Сообщений: 1366 Сила слова: 1.98
|
Вот я нуб! Пошёл учить английский
|
|
|
|
|
Записан
|
|
|
|
|
Faster ↓
|
 |
|
28 Октябрь, 2011, 01:38:11 , спустя 4 часа 5 минут 55 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 10
Сообщений: 954 Сила слова: 1.05
|
presets
|
|
|
|
|
Записан
|
воспитываю дочь. С домами и деревьями - не приставать.
|
|
|
|
phpdude ↓
|
 |
|
28 Октябрь, 2011, 01:50:42 , спустя 12 минут 31 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
/* метод установки параметров соединения */
ну вы и школота :-)
setupConnectionDetails()
должна такая хуйня называться если она есть. Но ее там быть не должно, это вообще хуйня тогда а не класс если такая хуйня там есть :)
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Kikky ↓
|
 |
|
28 Октябрь, 2011, 01:37:36 , спустя 11 часов 46 минут 54 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 2
Сообщений: 175 Сила слова: 1.14
|
sweet15w, почитай Макконнелла - Совершенный код, а конкретно главы про АТД и классы
|
|
|
|
|
Записан
|
|
|
|
|
Strate ↓
|
 |
|
29 Октябрь, 2011, 11:39:24 , спустя 1 день 10 часов 1 минуту 48 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
|
Карма: 1
Сообщений: 12 Сила слова: 8.33
|
Хуйня потому что mysql_* Есть же как минимум mysqli Спустя 54 секунды добавил И да, почему идентификатор соединения с базой - статика? А если мне надо 2 коннекта, чё делать? Спустя 13 секунд добавил И вообще: http://pyha.ru/go/godb/
|
|
|
|
|
Записан
|
|
|
|
|
sweet15w ↓
|
 |
|
01 Ноябрь, 2011, 11:49:40 , спустя 2 дня 12 часов 10 минут 16 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: -1
Сообщений: 104 Сила слова: -0.96
|
phpdude, написано ведь: параметры соединения должны браться из файла конфига (пока жестко присвоил)
Ivan, http://www.translate.ru/ параметры (рус) = parameters (eng)
master, пример использования: класс при выборке должен возвращать двумерный ассоциативный массив (писал функцию когда то аналогичную без ООП)
выглядеть будет как-то так:
$db=new SQL();
$db->
/*выборка из базы и вывод на экран*/
$menu=$db->q_select("select id, name from page order by id");
for( $i=0;$i<count($menu);$i++ ) {
echo $menu[$i]['id']." - ".$menu[$i]['name'];
}
/*удаление из базы | возвращает количество удаленных записей*/
$result=$db->q_delete("delete * from page");
/*обновление базы | возвращает количество обновленных записей*/
$result=$db->q_update("update page set name='".test."' where id>'5'");
arvitaly, каким боком date_default_timezone_set("Europe/Moscow") в классе SQL
да это запись из конфига была просто автоматом скопирована...
arvitaly, а что исключать... если база не выбралась... или нет коннекта... данных так и так не будет никаких...
setupConnectionDetails()
parametrs
params
parametres
да суть то не в том как какой метод или свойство называется... а то, как оно не правильно работает...
И да, почему идентификатор соединения с базой - статика? А если мне надо 2 коннекта, чё делать? [/qote] ну для начала мне бы хоть с одним соединением разобраться хочется... а уж дальше плясать от этого...
Хуйня потому что mysql_* Есть же как минимум mysqli у Вас весомые аргументы... а есть сервера, которые не поддерживают sqli и т.п.?? и вообще p.s. не орем, пожалуйста про sqli, pdo и т.п. эти все рукожопства придуманы для ознакомления... практики
|
|
|
|
|
Записан
|
отвечаю не в тему... за то редко...
|
|
|
|
sweet15w ↓
|
 |
|
01 Ноябрь, 2011, 02:11:20 , спустя 2 часа 21 минуту 40 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: -1
Сообщений: 104 Сила слова: -0.96
|
файл config
<?php
$config= array(
'sql_host' => 'localhost',
'sql_user' => 'root',
'sql_password' => '',
'sql_database' => 'wwwoopru',
'sql_charset' => 'cp1251',
);
?>
<?php
/**
класс для работы с базой данных mysql
**/
class SQL {
/**
статическая переменная для идентификации текущего соединения
**/
static $sql_id = 0;
protected $sql_host;
protected $sql_user;
protected $sql_password;
protected $sql_database;
public $sql_charset;
/**
конструктор класса
**/
function __construct () {
if( SQL:: $sql_id == 0 ) {
require_once "../cfg/config.php";
$this-> sql_params_set( $config );
SQL:: $sql_id = mysql_connect( $this-> sql_host, $this-> sql_user, $this-> sql_password );
$this-> sql_database_create( $this-> sql_database );
$this-> sql_database_set( $this-> sql_database );
$this-> sql_charset_set( $this-> sql_charset );
}
}
/**
деструктор класса
**/
function __destruct () {
if( SQL:: $sql_id != 0 ){
mysql_close( SQL:: $sql_id );
SQL:: $sql_id = 0;
unset( $config );
}
}
/**
установка параметров из файла конфига
**/
function sql_params_set ( $config ) {
$this-> sql_host= $config["sql_host"];
$this-> sql_user= $config["sql_user"];
$this-> sql_password= $config["sql_password"];
$this-> sql_database= $config["sql_database"];
$this-> sql_charset= $config["sql_charset"];
}
/**
установка кодировки по умолчанию для текущего соединения
**/
function sql_charset_set ( $sql_charset ) {
mysql_query("set names ". $sql_charset);
mysql_query("set @@character_set_client='". $sql_charset. "'");
}
/**
выбор базы данных для текущего соединения
**/
function sql_database_set ( $sql_database ) {
mysql_select_db( $sql_database );
}
/**
создание базы данных для текущего соединения
**/
function sql_database_create ( $sql_database ) {
mysql_query( "create database if not exists '". $sql_database. "'" );
}
/**
выборка из базы данных, возвращается двумерный ассоциативного массива
**/
function query_select ( $sql_query ) {
/** в разработке...еще нужно возвращать двумерный ассоциативный массив **/
return array(
'result' => 0,
'error' => '',
'count => 0,'
);
/**
возвращает array(
'result' - неудачное / успешное выполнение запроса,
'error' - при неудачном выполнении возвращает код ошибки с описанием,
'count' - количество выбранных записей,
)
**/
}
/**
удаление из базы данных, возвращается число удаленных строк
**/
function query_delete ( $sql_query ) {
/** в разработке... **/
return array(
'result' => 0,
'error' => '',
'count => 0,'
);
/**
возвращает array(
'result' - неудачное / успешное выполнение запроса,
'error' - при неудачном выполнении возвращает код ошибки с описанием,
'count' - количество удаленных записей,
)
**/
}
/**
изменение базы данных, возвращается число измененных строк
**/
function query_update ( $sql_query ) {
/** в разработке... **/
return array(
'result' => 0,
'error' => '',
'count => 0,'
);
/**
возвращает array(
'result' - неудачное / успешное выполнение запроса,
'error' - при неудачном выполнении возвращает код ошибки с описанием,
'count' - количество измененных записей,
)
**/
}
/**
добавление в базу данных, возвращается число добавленных строк
**/
function query_insert ( $sql_query ) {
if( ! mysql_query( $sql_query ) ) {
/* неудачное выполнение запроса */
return array(
'result' => 0,
'error' => "MYSQL ERROR #". mysql_errno(). ": ". mysql_error(),
'count' => 0,
);
} else {
/* успешное выполнение запроса */
return array(
'result' => 1,
'error' => "",
'count' => 1,
);
/**
возвращает array(
'result' - неудачное / успешное выполнение запроса,
'error' - при неудачном выполнении возвращает код ошибки с описанием,
'count' - количество выполненых записей (на будущее, для мультизапросов),
)
**/
}
}
}
?>
|
|
|
|
|
Записан
|
отвечаю не в тему... за то редко...
|
|
|
|
Nyaah ↓
|
 |
|
01 Ноябрь, 2011, 03:50:11 , спустя 1 час 38 минут 51 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Джедаи Карма: 34
Сообщений: 522 Сила слова: 6.51
|
и чем оно удобнее, чем PDO, к примеру? За исключением того, что у тебя нихуя не эскейпируется, для каждого типа запросов придётся вызывать свой метод, кодировка соединения устанавливается хз как, в случае возникновения ошибки, найти её можно хер знает где, ну и т.д.
|
|
|
|
|
Записан
|
Work, buy, consume, die
|
|
|
|