Библиотека Интернет Индустрии I2R.ru |
|||
|
Пишем на PHPНа самом деле, все три первых наших класса (vars, mysql, utils) можно один раз внимательно и с расстановкой написать, а потом просто пользоваться ими во всех остальных своих проектах. Но если в переменных окружения могут быть какие-то перемены, как и в обслуживающих утилитах, то в классе mysql нам вряд ли что-то когда-то придется менять, разве что, — реквизиты доступа к базе (логин, пароль...). Я вам даже так скажу (ну точно, замечательное у меня сегодня настроение), вы можете вообще не напрягаться и особенно не разбираться в том, что я сейчас напишу. То есть, понять все это, безусловно, вам придется (иначе, на фига я все это пишу), но сразу после прочтения вы имеете полное право забыть все это как страшный сон — не так важно. Итак. Давайте разбираться, какие основные функции нам нужны при работе с базой MySQL? Как человек знающий, я легко отвечу на этот вопрос. Во-первых, нам нужна процедура подключения к базе. Ее еще можно назвать процедурой авторизации или активации соединения. Или, как говорят программисты, "открытие соединения с базой". Во-вторых, нам нужна возможность оформить запрос в базу и механизм исполнения этого запроса. В-последних, за собой надо прибирать. Закрытие соединения. Все, по большому счету. Вот на этом месте я вас должен предупредить. Дело в том, что тот метод общения с базой, который напишем мы, не универсален. Благодаря нашим функциям, можно будет одновременно работать только с одним запросом к базе. Есть случаи, когда это не очень удобно. Но мне это никогда не мешало. В конце концов, всегда можно за несколько минут добавить недостающую функцию. Итак, давайте перейдем к делу. Я бы не стал повторять — как оформлять новый класс, но сегодняшний класс имеет одно малозаметное, но очень важное отличие от предыдущего (vars): класс class_mysql рождается от класса class_vars. То есть class_vars, являясь родительским к классу class_mysql, передает ему все свои возможности. В нашем случае, это значения тех переменных, которые мы описали на прошлом занятии. Открываем (создаем) новый файл class_mysql и пишем в нем: <? require("/home/roma/req/vars.class"); class class_mysql extends class_vars Видите, прежде всего, мы должны указать, что для нам для работы необходим файл "/home/roma/req/vars.class", т.к. в нем содержится фрагмент нашей программы, описывающий родительский class_vars. Затем, мы объявляем новый класс. Объявляем его точно так же, как и class_vars, только дописываем в конце строки ссылку на родительский класс: extends class_vars. Помните, я рассказывал вам, как наследуются классы в PHP? Вот это тот самый случай. Теперь перейдем к телу класса, и сначала добавим нужные нам переменные. var $sql_login="roma"; var $sql_passwd="parol"; var $sql_database="roma"; var $sql_host="127.0.0.1"; var $conn_id; var $sql_query; var $sql_err; var $sql_res; В первых четырех переменных мы определили реквизиты доступа к базе MySQL: регистрационное имя (логин), пароль, название нашей базы и IP-адрес, по которому физически располагается MySQL. Эти четыре переменные мы вполне можем перенести в класс vars, но я этого предпочитаю не делать. Почему? Ну, бывают такие случаи, когда мы доверяем управление нашим сайтом кому-то еще. При этом, мы можем дать этому человеку отдельный доступ именно к файлу с переменными, чтобы он мог влиять на манеру поведения и внешний вид нашего сайта. Но не всегда при этом мы даем ему доступ к самим скриптам и не сообщаем наших реквизитов для доступа к БД. Вторые четыре переменные мы будем активно эксплуатировать в нашей работе. Первая из них ($conn_id) — это идентификатор соединения. Он несет в себе информацию о полученном соединении к базе. Вторая (sql_query) — строка запроса. В нее мы будем помешать наш запрос к БД, прежде чем его активировать. Третья (sql_err) — код ошибки. Сервер MySQL, как и любая друга программа, может давать различные сбои как по своей вине, так и по нашей: когда наш запрос написан с ошибками. Вот эта переменная и будет работать у нас "флагом", который будет "подниматься", если произошла какая-то ошибка. А четвертая переменная (sql_res) будет содержать в себе полученную информацию из базы данных после выполнения запроса. Из этой переменной мы будем извлекать эту информацию удобным нам способом. Замечательно. Других переменных нам тут пока не понадобится, переходим к функциям. Вынужден с этого момента помещать куски исходников в текстовые блоки типа textarea, иначе они просто не влезут в формат моего сайта: либо расползется дизайн, либо будут переносы строк. И то, и другое — вредно для восприятия информации. Я постараюсь прилично все это оформить (прошу прощения у пользователей Netscape Navigator за то, что Нетскейп так и не научился нормально отрабатывать стили). Функция подключения к базе данных. Поясню построчно: . заголовок функции с названием . открывающая фигурная скобка . присваиваем переменной $conn_id идентификатор подключения к базе. Подключение производит функция PHP mysql_connect, которой в качестве параметров передаются: адрес хоста (компьютера с MySQL-сервером, логин и пароль). . выбираем базу данных, с которой будем работать. Выбор производится функцией MySQL mysql_select_db, которой в качестве параметра и передается название нашей базы данных. . закрывающая фигурная скобка. Понятно, что мы сделали? Мы подключились к серверу MySQL, используя свои реквизиты, после чего, выбрали интересующую нас базу данных. В $conn_id останется идентификатор нашего соединения, он нам пригодится в следующих двух функциях. Функция, выполняющая наш запрос к БД: Ну, тут совсем все просто. Первая строка (в теле функции) выполняет отправку запроса (функция PHP mysql_query), а результат помещает в объявленную нами переменную $sql_res. Вторая строка запрашивает код ошибки выполнения SQL-запроса (функция PHP mysql_error) и записывает ее в другую переменную, которую мы с вами тоже определили заранее — $sql_err. Вот такая простая функция. Как видите, PHP очень много делает за нас. На языке C это выглядело бы настолько страшно, что даже показывать это не стану, чтобы не отбить у вас вкус к изучению программирования. Нам осталось реализовать последнюю, на текущий момент, функцию класса class_mysql. Нам осталось зарыть наше соединение с сервером MySQL. Закрываем. По-моему, тут даже комментировать нечего. Ну ладно. Функция языка PHP mysql_close получает в качестве параметра идентификатор открытого соединения и закрывает это самое соединение. Все. Закрывайте оставшиеся тэги и сохраняете файл. Он у вас должен выглядеть вот так: За исключением, разумеется, реквизитов подключения к _вашей_ базе данных MySQL. "Финита ля комедия", — как говорят в театре. До следующих встреч! Руслан Курепин |
|
2000-2008 г. Все авторские права соблюдены. |
|