FAQ по perl и программированию для web Страница 15. Работа без курсоров
Работа без курсоров
DBI предоставляет несколько методов для такого рода работы: Методы для запросов:
selectrow_array
Возвращает одну строку запроса в виде массива
selectall_arrayref
Возвращает весь ответ сервера в виде массива ссылок на массивы.
Методы для выражений, не возвращающих значений
do
исполняет запрос
Пример:
#получить значение bar при baz=3 ($bar) = $dbh->selectrow_array('select bar from foo where baz=3');
# установить baz в некоторое значение при bar='somestring' $dbh->do("update set baz=1 where bar='somestring'");
9.2 Как работать с записями кусочками: первые N записей, следующие N...?
Можно несколькими способами: 1. Просто прокручивая курсор:
$c = $dbh->prepare('select baz, bar from foo'); $c->execute; # если нужна последовательность с 26 по 50
for ($k = 0; $k < 26; $k++) { $c->fetchrow_array; } # теперь можно вывести данные print "<table border=1><tr><th>bar</th><th>baz</th></tr>\n"; while (($bar, $baz) = $c->fetchtrow_array) { print "<tr><td>$bar</td><td>$baz</td></tr>\n"; } $c->finish; # Закрыть курсор print "</table>";
2. Используя курсоры СУБД
# Показан синтаксис PostgeSQL $dbh->do('declare mycursor cursor for select bar, baz from foo'); $dbh->do('move 25');
# И теперь будем получать данные $c = $dbh->prepare('fetch forward 25 in mycursor'); while (($bar, $baz) = $c->fetchrow_array) { print ....; } $c->finish; $dbh->do('close mycursor');
3. Для MySQL можно использовать директиву LIMIT
$c = $dbh->prepare('select bar, baz from foo limit 26,25'); while (($bar, $baz) = $c->fetchrow_array) { print ....; } $c->finish;
9.3 Где взять документацию/учебник по SQL?
В книжных магазинах сейчас обширный набор книг по SQL. (От рекомендаций воздержусь -- ни одну из них я не читал)
На MCP personal bookshelf ( http://pbs.mcp.com) есть книга "Teach yourself SQL in 21 days" -- весьма рекомендую, очень хорошая книга.
Наверное тоже одним из часто встречающихся приложений CGI являются счетчики посещений. Они стоят практически на каждой страничке, возможно даже и у вас. Но иногда вас не устраивает тот факт, что счетчик лежит где-то в другом месте... подробнее
Вам иногда хотелось наверное узнать,кто же смотрит на вашу страничку,откуда и когда ваша страничка посещалась.
Бывают такие вопросы? Кто-то считает,что ответить на них нельзя. Но вы не верьте этому расхожему мнению... подробнее
Я так решил назвать эту часть,потому что это название больше всего соответствует.
Я вам в этой части расскажу о всяких тонких и неочевидных местах и о том как с этим боротся... подробнее
CGI-программы -не самые простые в отладке,по сложности отладки они способны сравнится лишь с отладкой драйверов. Вся сложность заключается в том,что скрипт выполняется не как обычная программа. Он выполняется в специальной среде сервера,которая создается при клиентском запросе... подробнее
Когда говорят о каком-то популярном сайте,то частенько к преимуществам относят и анимацию. Действительно,когда изображение изменяется (и особенно к месту ;)),то это смотрится и пользователю нравится... подробнее