Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно 
с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры 
должно быть ровно столько, сколько полей в выходных результатах, иначе 
выполнение программы будет прекращено.
Пример
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef); 
my $query = "SELECT name, date FROM myothertable"; 
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch) 
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
DBI::bind_param
$result = $statement_handle->bind_param($param_number, $bind_value); 
$result = $statement_handle->bind_param($param_number, $bind_value, 
$bind_type); 
$result = $statenent_handle->bind_param($param_number, $bind_value, 
\%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо 
меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер 
метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй 
аргумент - подставляемое значение. Необязательный третий аргумент задает тип 
подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => 
&DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой 
книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, 
SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и 
SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и 
DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список 
соответствия на данный момент. Если подстановка невозможна, функция возвращает 
undef.
Таблица 21-1. Соответствие типов SQL
DBIMSQLMySQLSQL_CHARCHAR TYPEFIELD TYPE CHARIDENT TYPEFIELD TYPE DATENULL TYPE
FIELD TYPE DATETIMEDATE TYPEFIELD TYPE NULLMONEY TYPEFIELD TYPE TIMESTAMPTIME 
TYPEFIELD TYPE TIMEIDX TYPESYSVAR TYPEANY TYPE
SQL_NUMERICFIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORTSQL_DECIMAL
FIELD_TYPE_DECIMALSQLJNTEGERINT_TYPEFIELD_TYPE_INT24SQL SMAL-LINTUINT_TYPE
FIELD_TYPE_INT24SQL_FLOATFIELD_TYPE_FLOATSQL_REALREAL TYPE LAST_REAL_TYPEFIELD 
JTYPE_DOUBLESQLJDOUBLEFIELD_TYPE_DOUBLESQL_VARCHARTEXT_TYPEFIELD_TYPE_TINY BLOB 
FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR 
STRING FIELD TYPE STRINGПример
use DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
"SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
DBI::connect
$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. 
Через возвращаемый описатель выполняются все операции с сервером базы данных. 
Первый аргумент является источником данных. Список имеющихся источников можно 
получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника 
данных 'DBI:mSQL:$database:Shostname:Sport' и 
'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при 
соединении через стандартный порт. Аналогично можно опустить ': Shostname: 
Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя 
базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе 
данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы 
как 'jndef при работе с MySQL, то у пользователя, запустившего программу, 
должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. 
Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее 
время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для 
сброса им нужно придать значение 0, для установки - какое-либо истинное 
значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - 
сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, 
атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в 
$DBI;:errstr помещается ошибка.
 
<<-[Весь Текст]
Страница: из 157
 <<-