Интернет-казино Grand Casino произвело фурор в игорном мире.
Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее.
Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.
Установка Для использования интерфейсов rnSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты :
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени
написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по
меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки , связанные с
защитой . Более подробные сведения о Perl, включая адреса для загрузки , можно найти по адресу :
http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl
Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он
находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных . Это требуется для
модулей Msql-MysqL Последняя версия — Data-ShowTable-З ., ее можно найти по адресу : http://
DBI: :bind_param подставляет в команды действительные значения вместо меток -......*?' (. DBI: :
prepare). Первый аргумент — номер метки -......в команде , нумерация начинается с 1 ( напра -.......). Второй аргумент - подставляемое значение . Необязательный третий аргумент задает тип
подставляемого значения . Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI;: :SQL_TYPE }
, где 'SQL_TYPE' - тип параметра . На момент написания этой книги DBI поддерживал SQL-типы
DBI::connect требует по крайней мере три аргумента и необязательный четвертый . Через возвращаемый
описатель выполняются все операции с сервером базы данных . Первый аргумент является источником
данных . Список имеющихся источников можно получить с помощью DBI::data_sources . Для mSQL и
MySQL формат источника данных 'DBI:mSQL:$database:$hostname:$ро rt' и
'DBI:mysql:$database:$hostname:$port' соответственно . Можно опустить :$port при соединении через стан -
порт . Аналогично можно опустить : $hostname; $port при соединении с сервером на локальном узле
с помощью сокета Unix. Имя базы данных указывать обязательно .
Второй и третий аргументы - имя пользователя и пароль для подключения к базе данных . Для mSQL оба
аргумента должны иметь значение 'undef'. Если они заданы как 'undef' при работе с MySQL, то у
пользователя , запустившего программу , должны быть права доступа к требуемым базам данных .
Последний аргумент необязателен и является ссылкой на ассоциативный массив . Данный хэш позволяет
определить некоторые атрибуты соединения . В настоящее время поддерживаются только атрибуты
PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое -.......истинное значение . По умолчанию PrintError и AutoCommit включены , a RaiseError - сброшен . Поскольку в
данное время ни mSQL, ни MySQL не поддерживают транзакции , атрибут AutoCommit должен быть установлен
(......подробно см . Атрибуты ).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI: errstr помещается ошибка ..
Пример
use DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata' на локальном # сервере mSQL.
my $db2=DBI-> connect ('DBI:mysql:mydata:myserver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata1 сервера MySQL
# 'myserver.com' через порт по умолчанию .
# При соединении использовались имя пользователя 'me' и пароль 'mypassword'.
my $db3 =. DBI->connect('DBI:mSQL:mydata',undef,undef,{RaiseError => 1});
# Теперь $db3 - такое же соединение , как $db1, за исключением того , что # установлен атрибут 'RaiseError'.
DBI::data_sources
@data_sources = DBI->data_sources($dbd_driver);
DBI::data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого
драйверы базы данных в формате , пригодном к использованию в качестве источника данных функцией
DBI:::connect . Программа заканчивает свое выполнение с ошибкой , если задано неверное имя драйвера DBD.
В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL-'mysql'.
Пример
use DBI;
my @msql_data_sources = DBI->data_sources('mSOL');
my @mysql_data_sources - DBI~>data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBD::mysql, иначе # выполнение программы прекратится .
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep, $f i el d_sep, $f i l e_handle);
DBI:::dump_results выводит содержание описателя команды в удобном и упорядоченном виде , применяя к
каждой строке DBI::neat_string. Функцию удобно использовать для быстрой проверки результатов за -.......во время разработки программы . Единственный обязательный аргумент - описатель команды .
Второй аргумент , если имеется , задает максимальный размер полей в таблице , по умолчанию равный 35.
Третий аргумент задает строку , используемую для разграничения строк данных , по умолчанию - \.
Четвертый аргумент задает строку , используемую для разделения значений полей в строке , по умолчанию
используется запятая . Последний аргумент задает ссылку на глобальный описатель файла , в который
выводятся результаты . По умолчанию это STDOUT. Если невозможно прочесть описатель команды ,
возвращается значение undef.
Пример
use DBI;
my $db = DBI->connect( 'DBI:mSQL:mydata', undef, undef);
my $query = "SELECT name, date FROM myothertable";
DBI::execute выполняет SQL-команду , содержащуюся в описателе команды . Для запроса , не являющегося
SELECT, функция возвращает число измененных строк . Функция возвращает -, если число строк неиз -........ Для запроса типа SELECT при успехе возвращается истинное значение . Если заданы аргументы , они
используются для подстановки имеющихся в команде меток - (. DBI:::p r epar e).
Пример
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statementjiandle2 = $db->prepare("SELECT name, date FROM myothertable
WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда . К значениям можно # обращаться через описатель .
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания :
# SELECT name, date FROM myothertable WHERE name like 'J%'
DBI::fetchrow_hashref работает так же , как DBI::fetchrow_arrayref , но возвращает ссылку на
ассоциативный , а не на обычный массив . Ключами хэша являются имена полей , а значениями - значения в
этой строке данных .
Пример
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @field_names содержит - теперь имена всех полей в запросе .
# Это делается только один раз . Во всех следующих строках будут те же поля .
my @row1 = values %row1;
DBI::finish
$result = $statement_handle->finish;
DBI::finish освобождает все данные в описателе команды , чтобы можно было уничтожить описатель или
снова подготовить его . Некоторым серверам баз данных это необходимо для освобождения соответству -
ресурсов . DBD::mSQL и DBD::mysql не нуждаются в этой функции , но для переносимости кода
следует использовать ее по окончании работы с описателем команды . Функция возвращает неопределенное
значение undef, если описатель не удается освободить .
Пример use DBI;
my $db - DBI->connect('DBI:mysql:mydata', 'me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output - $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $mytable_output или подготовить для него # другую команду SQL.
DBI::func
$handle->func(@func_arguments, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('._ListTables');
$result = $drh~>func( $database, '_CreateDB' );
$result = $drh->func( $database, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции , включенные в различные драйверы
DBD. Она используется с описателем базы данных или описателем команды , в зависимости от назначения
специализированной функции . По возможности следует использовать равносильную переносимую функцию .
При использовании специализированной функции сначала передаются ее аргументы как скаляр , а затем - имя.функции . DBD::mSQL и DBD::mysql реализуют следующие функции :
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список
имеющихся у сервера баз данных . Лучше использовать переносимую функцию DBI::data_sources .
_Listlat)les
Функция _ListTables возвращает список таблиц , имеющихся в текущей базе данных .
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу
данных на сервере . Для работы с этой функцией необходимо иметь право создания баз данных .
Функция возвращает - в случае неудачи и 0 в случае успеха .
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера
эту базу данных . Данная функция не выводит пользователю сообщений и при успешном выполнении
удаляет базу данных навсегда . Для работы с этой функцией необходимо иметь право удаления баз
данных . Функция возвращает - в случае неудачи и 0 в случае успеха .
Пример
use DBI;
my $db = DBI->connect('DBI:mysql:mydata','me 1 , 'mypassword');
my @tables = $db->func('_ListTables');
# @tables содержит теперь список таблиц в 'mydata'.
DBI::prepare принимает в качестве аргумента SQL-команду , которую некоторые модули баз данных
переводят во внутреннюю компилированную форму , исполняемую быстрее при вызове DBI:: execute . Эти мо -
DBD ( DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов .
Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд , поэтому DBI::
prepa re просто запоминает команду . По желанию вместо значений данных в команду можно вставить любое
количество символов '?'. Эти символы известны как метки - (placeholders). Функция DBI:
;bincLparam осуществляет подстановку действительных значений вместо меток -. Если по какой -.......причине команду нельзя подготовить , функция возвращает undef.
Пример
use DBI;
my $db = DBI->connect('DBI:mysql:mydata', 'me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению .
My $statement_handle = $db->prepare(
'SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готова к выполнению после подстановки # с использованием функции DBI::bind_param.
DBI::quote
$quoted_string = $db->quote($string);
DBI : : quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно
расставленными для ввода в запрос кавычками , в том числе расставляя корректные кавычки по концам
строки .
Пример
use DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata', 'me','mypassword');
my Sstring = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' ( включая наружные кавычки )
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' ( включая наружные кавычки ).
# Теперь обе строки годятся для использования в командах для своих # соответствующих серверов баз данных .
DBI::rows
$number_of_rows = $statement_handle->rows;
DBI: : rows возвращает число строк данных , содержащихся в описателе команды . Для DBD::mSQL и DBD::mysql
эта функция дает точное число для всех команд , включая SELECT. Для многих других драйверов , которые не
хранят в памяти сразу все результаты , эта функция надежно работает только для команд , не являющихся
SELECT. Это следует учитывать при написании переносимых программ . Функция возвращает -, если по
какой -......причине число строк неизвестно . Переменная $DBI: ; rows выполняет ту же задачу .
Пример.
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myothertable_output->rows;
print " В таблице 'myothertable' есть $rows строк ' ВоЬ '\n";
DBI::state
$sql_error = $handle->state;
DBI:::state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время
DBD::mSQL и DBD;:mysql сообщают 'S 000' для всех ошибок . Эта функция доступна для описателей баз
данных и команд . Переменная $DBI::state выполняет ту же задачу .
Пример
use DBI;
my $db = DBI->connect('DBI:mysql:mydata', 'webuser', 'super_secret_squirrel');
my $sql_error = $db->state;
warn(“Bor последняя по времени ошибка DBI SQL: $sql_error");
DBI::trace
DBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI::trace используется в основном для отладки . Если уровень трассировки установлен равным 2, выводится
полная отладочная информация . Установка уровня 0 отключает трассировку . DBI->trace осуществляет
трассировку для всех описателей , a $handle->trace - только для данного описателя - базы данных или команды .
При наличии DBI->trace или $handle->trace второго аргумента отладочная информация выводится в
указанный файл . Также трассировку можно включить , установив значение переменной окружения
DBI_TRACE. Если переменная окружения установлена равной числу ( настоящее время 0 или 2), включается
трассировка всех описателей на этом уровне . При другом значении переменной уровень трассировки
устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной
информации .
Пример
use DBI;
my $db1 = DBI->connect('DBI:mysql:mydata', 'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotherdata',undef,undef);
DBI->trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача # посылается в файл 'DBI.trace'.
DBI::commit
DBI::rollback
DBI::ping
$result = $db->commit;
$result = $db->rollback;.$result = $db->ping;
DBI::commit и DBI::rollback полезны только при работе с серверами , поддерживающими транзакции . При
работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта . DBD: :ping пытается проверить ,
запущен ли сервер базы данных . В DBD::mSQL и DBD: :mysql она не реализована .
Атрибуты
$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} ( MySQL)
$statement_handle->{is_blob} ( MySQL)
$statement_handle->{is_key} ( MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_nufri}
$statement_handle->{is_pri_key} ( MySQL è mSQL 1.x
$statement_handle->{length}
$statement_handle->{max_length} ( MySQL)
$statement_handle->{NAME}
$statement_handle->{NULLABLE}
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов , которые можно читать и устанавливать в любой
момент . Присвоение значения атрибуту может определенным образом изменить поведение текущего
соединения . Присвоение любого отличного от нуля значения атрибуту устанавливает его . Присвоение
значения 0 атрибуту сбрасывает его . Некоторые значения определены только для конкретных баз
данных и непереносимы . Ниже следуют атрибуты , применимые как к описателям баз данных , так и к
командам .
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных , поддерживающих транзакции .
Для mSQL и MySQL он всегда должен быть установлен ( по умолчанию ). Попытка
изменить его прерывает выполнение программы .
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных ,
возвращаемых запросом (, при вызове DBI::fetch row ).. Все производные от данного описатели
наследуют значение этого атрибута . Значение по умолчанию - «......».
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог
пользоваться родительским описателем . Его следует установить в родительском или дочернем
процессе , но не в обоих . Значение по умолчанию - «......».
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения . При сброшенном.атрибуте доступ к ошибкам осуществляется только через $DBI::errstr. Все производные от данного
описатели наследуют значение этого атрибута . Значение по умолчанию -«установлен ».
$handle->{RaiseError)
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации ,
прерывая ее выполнение , если не определен обработчик '_DIE_'. Все описатели , производные от
этого , наследуют значение этого атрибута . Значение по умолчанию -«сброшен ».
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах
программирования (.................пережитках Perl 4). Сброс этого атрибута отключает предупреждения
DBI, что допустимо только при полной уверенности в своем мастерстве . Все производные от данного
описатели (, описатель команды , происходящий от описателя базы данных ) наследуют
значение этого атрибута . Значение по умолчанию - «......».
$statement_handle->{insertid}
Непереносимый атрибут , определенный только для DBD::mysql. Он возвращает из таблицы текущее
значение поля auto_increment ( таковое имеется ). Если поле auto_increment не существует ,
атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут , определенный только для DBD::mysql. Атрибут возвращает ссылку на
массив булевых значений , указывающих для каждого из содержащихся в описателе команды полей ,
имеет ли оно тип BLOB. Для описателя команды , который был создан не выражением SELECT,
$statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут , определенный только для DBD::mysql. Он возвращает ссылку на массив
булевых значений , указывающих для каждого из содержащихся в описателе команды полей ,
определено ли оно как KEY. Для описателя команды , который был создан не выражением SELECT,
$statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут , определенный только для DBD::mSQL и DBD::mysql. Он возвращает
ссылку на массив булевых значений , указывающих для каждого из содержащихся в описателе
команды полей , определено ли оно как 'NOT NULL' . Для описателя команды , который был создан не
выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в
переносимом виде , используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут , определенный только для DBD::mSQL и DBD::mysql. Атрибут
возвращает ссылку на массив булевых значений , указывающих для каждого из содержащихся в
описателе команды полей , имеет ли оно числовой тип . Для описателя команды , созданного не
выражением SELECT, $ s t at ement _handl e->{i s_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут , определенный только для DBD::mSQL и DBD::mysql. При
использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x
не использует первичные ключи . Атрибут возвращает ссылку на массив булевых значений ,
указывающих для каждого из содержащихся в описателе команды полей , является ли оно первичным
ключом .
Для описателя команды , созданного не выражением SELECT, данный атрибут возвращает undef.
$statenent_handle->{length}.Непереносимый атрибут , определенный только для DBD::mSQL и DBD::mysql. Этот атрибут
возвращает ссылку на список максимально допустимых размеров полей , содержащихся в описателе
команды . Для описателя команды , который был создан не выражением SELECT, $statement_handle->{
length} возвращает undef.
$statement_handle->{.max_length}
Это непереносимый атрибут , определенный только для DBD::mysql. Атрибут возвращает ссылку на
список фактических максимальных размеров полей , содержащихся в описателе команды . Для
описателя команды , который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей , содержащихся в описателе команды . Для
описателя команды , который был создан не выражением SELECT, $staternent_handle->{NAME} возвращает
undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений , указывающих для каждого из
содержащихся в описателе команды полей , может ли оно иметь значение NULL. Поле , определенное как
'NOT NULL' , даст в списке значение 0. Остальные поля дадут значение 1 . Для описателя команды ,
созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных , содержащихся в описателе команды . Для описателя
команды , который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает
0
$statementJandle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток - в описателе команды . Метки -
обозначаются в команде символом '?'. Для подстановки вместо меток - надлежащих
значений используется функция DBI:: bind_values .
$statement_handle->{table}
Это непереносимый атрибут , определенный только для DBD: rmSQL и DBD::mysql. Атрибут
возвращает ссылку на список имен таблиц , к которым осуществлялся доступ в запросе . Полезно
использовать для SELECT с соединением нескольких таблиц .
$statement_handle->{type}
Непереносимый атрибут , определенный только для DBD::mSQL и DBD::mysql. Он возвращает
ссылку на список типов полей , содержащихся в описателе команды . Для описателя команды , создан -...........
не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка
являются целые числа , соответствующие перечислению в заголовочном файле С mysql_com.h из
дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует . Но доступ
к типам возможен через функцию &Mysql;::FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недоку -.......атрибут $statement_handle->{format_type_name}, идентичный
$statement_handle->{type}, за исключением того , что вместо целых чисел возвращает SQL-
типов . Следует подчеркнуть , что это недокументированный атрибут , и автор DBD::mysql
высказал свое намерение убрать его , как только в DBI будет реализована такая же функция .
$statement_handle->{CursorName}
$handle->{LongReadLen}
$handle->{LongTruncQk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего
не даст , а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName}
. В настоящее время любое обращение к нему «» программу ..
Пример
use DBI;
my $db = DBI->connect('mysqL:mydata','me','mypassword');
$db->{RAISE_ERROR} - 1;
# Теперь любая ошибка DBI/DBD убьет программу .
my $statement_handle = $db->prepare('SELECT•* FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @fields содержит теперь список с именами всех полей в 'mytable'.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.