Perl для системного администрирования



              

Использование DBI - часть 3


©machines = qw(bendir shimmer sander);

$sth = $dbh->prepare(q{SELECT nair.e, ipaddr FROM hosts WHERE naire = 9}):

foreach Sname (&machines){ $sth->execute($narr.e):

Каждый раз, проходя через цикл гегемон, запрос SELECT выполняется с разными условиями WHERE. Можно применять и несколько заполнителей:

$str->prepare;

q{SELECT ria.T.o :nad''!" f ROM t ou's WHERE (name = ? AND bldg = ? AND dept = ?)}):

$sth->execute($nan-!0t $bldg, Sdept);

Теперь, когда известно, как получить количество записей, обрабатываемых запросом, отличным от SELECT, посмотрим, как получить результаты запросов SELECT.

Шаг 4: Получите результаты запроса SELECT

Механизм, рассмотренный здесь, похож на историю о курсорах из приложения D. Когда серверу при помощи execi::p() посылается запрос SELECT, применяется способ, позволяющий возвращать результаты построчно.

Для получения данных в DBI используется один из методов, перечисленных в табл. 7.1.

Таблица 7.1. DBI-методы получения данных

Имя

Возвращает

Возвращает, если больше нет записей

fetchrow_arrayref ( )

Ссылка на анонимный массив со значениями, являющимися полями следующей записи

undef

fetchrow_array()

Массив со значениями, являющимися полями следующей записи

Пустой список

fetchrow_hashref ( )

Ссылка на анонимный хэш, ключами которого являются имена полей, а значениями - значения полей следующей записи

undef

fetchall_arrayref ()

Ссылка на массив массивов

Ссылка на пустой массив

Посмотрим, как работают эти методы в нашем случае. Для каждого из примеров будем считать, что перед вызовом метода выполнено следующее:

$sth = $dbh->prepare(q{SELECT name,ipaddr,dept from nosts}) or

die "Невозможно подготовить запрос: ".$dbh->errstr." \n":

$sth->execute or die "Невозможно выполнить запрос: ". $dbh-->orr

Вот метод fetchrow_arrayref () в действии:

while (Saref = $sth->fetchrow_arrayref){ print "name: " .

$aref~>[0] . "\n"; print "ipaddr: " . $aref->[1] . "\n";




Содержание  Назад  Вперед