Поскольку параметры доступа к базе данных в вашем приложении будут использоваться практически во всех сценариях PHP, работающих с сервером MySQL, обычно они выделяются в отдельный конфигурационный файл и включаются в сценарий с помощью оператора include() там, где это требуется по алгоритму. Это не только позволяет многократно использовать ваше приложение, но и снижает влияние изменения имени пользователя или его пароля. При этом любое изменение будет касаться лишь одного конфигурационного файла и не потребует внесения изменений во все сценарии.
Для того чтобы получить доступ к серверу базы данных MySQL, сначала необходимо установить соединение с этим сервером. Обмен данными между PHP и сервером базы данных осуществляется через это соединение.
Для того чтобы инициировать это соединение, PHP вызывает функцию mysql_ connect() .
Листинг 21.6.
$connection = mysql_connect($host, $user, $pass) or die (" Невозможно подключиться!");
Для этой функции необходимы три аргумента: имя узла, на котором работает сервер MySQL, имя пользователя MySQL и пароль MySQL. Если сервер базы данных и Web-сервер работают на одной и той же машине, обычно имени сервера является localhost.
Данная функция возвращает идентификатор соединения, который сохраняется в переменной $connection. Впоследствии этот идентификатор используется в сценарии при работе с базой данных и детальнее обсуждается в разделе "Управление соединением".
После того как получено соединение с сервером, следующим шагом является выбор рабочей базы данных. В PHP это можно сделать с помощью функции mysql_ select_db() .
Листинг 21.7.
mysql_select_db($db) or die (" Невозможно выбрать рабочую базу данных!");
Функция mysql_select_db() принимает имя базы данных как аргумент и подготавливает выбранную базу данных для ее использования.
А теперь можно передать запрос. Для этого используется функция mysql_query() .
Листинг 21.8.
$query = "SELECT * FROM employees";
$result = mysql_query($query) or die (" Ошибка в запросе: $query. " . mysql_error());
Стена молчания
Неплохим решением является использование оператора отмены вывода диагностических сообщений PHP "@" всеми функциями MySQL. Таким образом можно предотвратить утечку информации о базе данных компании.
Вопрос пунктуации
В отличие от стиля написания SQL-запросов, принятого в клиенте mysql, при работе с PHP-функцией mysql_query(), SQL-запрос не надо завершать точкой с запятой. Это одна из наиболее распространенных ошибок, которые допускают новички при работе с PHP.
Для этой функции необходим один аргумент: выполняемый SQL-запрос. Это может быть любой допустимый запрос, который может принять и обработать сервер MySQL.
Результирующий набор, возвращенный предыдущей функцией, сохраняется в переменной $result.
Этот результирующий набор может содержать одну и более строк или столбцы данных в зависимости от вашего запроса. В случае ошибки в запросе, например, в имени столбца или ключевом слове, сервер MySQL завершит выполнение запроса и возвратит сообщение об ошибке. Это сообщение можно получить с помощью функции mysql_error() .
Диагностирование ошибок подробнее описано в разделе "Обработка ошибок".
После получения результирующего набора, PHP предоставляет множество функций для обработки этого результирующего набора. Этот пример демонстрирует использование двух наиболее часто применяемых функций: функции mysql_num_rows() , возвращающей общее число строк в результирующем наборе, и функции mysql_fetch_row() , которая используется для выборки определенной строки из результирующего набора.
Поскольку функция mysql_fetch_row() делает выборку строки в виде простого индексированного массива значений, наиболее эффективной будет его обработка в цикле, что и показано в этом примере - функция mysql_fetch_row() совмещается с циклом while для последовательного просмотра строк полученного результирующего набора, причем каждый столбец распечатывается в обычной HTML-таблице.
Различные нюансы
Но есть и альтернативы использованию функции mysql_fetch_row(). Подробнее об этом можно прочесть в разделе "Обработка результирующего набора".
После обработки всех строк необходимо освободить использованную память и "провести генеральную уборку" с помощью функций mysql_free_result() и/или mysql_ close(). Первая из них освобождает память, занятую результирующим набором, оставляя соединение с базой данных открытым для других операций. А вторая функция закрывает соединение с базой данных и освобождает память, использованную идентификатором соединения (а также результирующий набор, если вы забудете воспользоваться функцией mysql_free_result() ).
Листинг 21.10.
mysql_free_result($result); mysql_close($connection);
Как будет видно из последующих примеров, шесть только что описанных шагов будут использоваться вновь и вновь при построении Web-приложений, работающих с данными. В следующих разделах эти шаги будут рассмотрены подробнее.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. MySQL и PHP. Думая о будущем
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. MySQL и PHP. Продолжение. | Все о MySQL. Управление соединением |