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

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

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

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n"; 
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
DBI::fetchrow_array
@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, 
созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow 
возвращает очередную строку данных. Когда данных больше нет, функция возвращает 
неопределенное значение undef. Порядок элементов в результирующем массиве 
определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то 
элементы следуют в том порядке, в котором они были определены в таблице.
Пример
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
DBI::fetchrow_arrayref, DBI::fetch
$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как 
DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
Пример
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = "SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных, 
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных. 
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
DBI::fetchrow_hashref
$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :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;
 
<<-[Весь Текст]
Страница: из 157
 <<-