ЖУРНАЛ ХАКЕР

PHP vs PERL. Схватка между PHP-кодером и Perl-кодером

Xakep, номер #035, стр. 035-048-2


Раунд 3

Nikitos

Реляционные базы данных. Штука реально крутая, нужная любому приличному веб-кодеру, без нее никуда. Естественно, то, как осуществлена работа с БД, в частности с mySQL, в том или ином языке достаточно ярко покажет их "прогрессивность" ;). Конкретно работа с БД в любом языке сводится примерно к следующему: подключение к серверу Базы Данных, выбор БД, аутентификация, отправка запроса, получение ответа. Все. Дальше - обработка, юзание полученных данных.

В php есть замечательная функция mySQL_fetch_array(), помещающая содержимое ответа в ассоциативный массив - хэш по-перловски, где ключи для его элементов - названия соответствующих полей в БД. Если ответ содержит не одну запись, то делается цикл while($var=mySQL_fetch_array($otvet)), в пределах которого доступны ВСЕ полученные данные.

Например:

<?

while($var=mySQL_fetch_array($otvet))

{

echo "Содержимое Поля: $var[pole1]";

}

?>

Выведет содержимое поля 1 из всех записей в таблице. "А если мне только конкретная нужна?" - наверняка подумал кто-то. Для этого, батенька, и есть специальный язык запросов к БД. Выборку из таблицы делаешь (см. статью про SQL в одном из ближайших номеров Х).

TEHb13

В Перле тебе не нужно знать особенности архитектуры БД, с которой ты работаешь, достаточно иметь представление о том, что тебе надо (с этим, думаю, проблем не должно возникнуть :), и синтаксис основных запросов к конкретной БД. Работа, например, с MySQL осуществляется таким образом:

use DBD::mysql;

$dbh = DBI::mysql->connect('localhost', 'login', 'pass');

$rv =$dbh->do(любая команда, доступная в данной БД);

Раунд 4

Nikitos

А вот если нет возможности использовать реляционные БД (ну не нашел ты хостинг...) , придется гемориться с нереляционными - текстовыми файлами, где информация записана не в удобную таблицу, а в строку через разделитель. Чтение файла - тема малоинтересная и легко выполняемая в обоих языках. Далее - разбираемся в полученной после прочтения файлов мусорке. Для этого в php есть типа "аналог" функции mySQL_fetch_array - explode($srt, "razd");

Она помещает в массив элементы, образовавшиеся после нарезания строки по разделителям. Если не въехал, то вот как это примерно выглядит:

Была строка: Lolo|lala|momo|mama

Делаешь explode c разделителем "|" и получаешь массив со следующими элементами:

[1]: Lolo

[2]: lala

и т.д.

Ну а дальше делай с этими элементами что хочешь - насколько фантазии хватит ;). При возникновении желания написать что-нибудь серьезное, надо желать этого, покуда не появится мысль о безопасности - время нынче такое... ;). Подумать - одно, сделать - совсем другое. Тут регулярные выражения нужны :). Правда, сравнивать особо нечего - PHP работает с ПЕРЛовским синтаксисом составления шаблонов, который, имхо, написан просто улетно. На первый взгляд сложновато, но на самом деле после часика гимора осознаешь всю необъятную прелесть темы. А уж простенькую проверку валидности е-мейла ты точняк напишешь через полчаса ;).

Назад на стр. 035-048-1  Содержание  Вперед на стр. 035-048-3