Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

PHP5_nachinayushim

.pdf
Скачиваний:
29
Добавлен:
20.03.2015
Размер:
26.79 Mб
Скачать

ODBC 793

ODBC-параметры в конфигурации PHP

Так как средства поддержки ODBC компилируются в PHP, для того чтобы заста+ вить их работать, изменять настройки в php.ini не обязательно. Однако следует за+ метить, что несколько параметров влияют на некоторые ODBC+функции в PHP; эти параметры описываются ниже.

odbc.default_db: задает строку, определяющую используемую по умолчанию базу данных на случай, если функция odbc_connect() или odbc_pconnect() вызывается без указания базы данных.

odbc.default_user: задает строку, определяющую имя пользователя по умолчанию на случай, если функция odbc_connect() или odbc_pconnect() вызывается без указания имени пользователя.

odbc.default_pw: задает строку, определяющую стандартный пароль, кото+ рый используется, если функция odbc_connect() или odbc_pconnect() ис+ пользуется без указания пароля.

Конфигурационные параметры также можно использовать для того, чтобы раз+ решать или проверять постоянные соединения, задавать максимальное количество постоянных соединений (odbc.allow_persistent, odbc.check_persistent

и odbc.max_persistent), задавать максимальное количество соединений, включая постоянные (odbc.max_links), а также настраивать обработку LONG+полей или би+ нарных данных (odbc.defaultlrl и odbc.defaultbinmode).

Пример использования ODBC и SQL Server в PHP-приложении для Windows

Для работы этого примера с использованием ODBC в PHP, необходима база дан+ ных SQL Server с минимум одной таблицей (в данном случае используется таблица ‘‘emails’’), а также DSN ++++++ область для хранения необходимой информации о соеди+ нении (можно создать соединение без использования DSN, включив всю информа+ цию о соединении в строку подключения; если настроить DSN невозможно, то это единственный способ заставить ODBC работать).

Создание базы данных Microsoft SQL Server

Прежде чем создавать базу данных, необходимо установить и настроить SQL Server. В этом примере используется SQL Server 2000 в Windows 2000. Для управле+ ния SQL Server используется программа Enterprise Manager. Ниже описан процесс подготовки примера.

1. Открыть диспетчер SQL Server (Пуск Программы Microsoft SQL Server Enterprise Manager).

2.Открыть узел локального сервера, как показано на рис. Г.1.

3.Щелкнуть правой клавишей мыши на узле Databases и выбрать в контекстном меню создание новой базы данных (пункт New Database).

4.Присвоить создаваемой базе имя (в примере база данных называется BPHP5).

794 Приложение Г

Рис. Г.1.

5.Открыть узел новой базы данных и создать в ней таблицу, щелкнув правой кла+ вишей на узле Tables и выбрав в контекстном меню пункт New Table.

6.В режиме конструктора введите имя поля email_id, установите для него тип данных int и сделайте это поле уникальным (присвойте значение Yes пара+ метру Identity, который находится внизу экрана), кроме этого, сделайте поле первичным ключом, выбрав все поле и щелкнув на кнопке Set primary key.

7.Создайте еще одно поле, назовите его emails и настройте тип данных varchar с длиной поля 100 символов.

8.Сохраните таблицу под именем emails. Эта таблица (в режиме конструктора) должна выглядеть так, как показано на рис. Г.2.

9.Закройте SQL Server.

Чтобы вместо базы данных SQL Server использовать базу данных Access, можно открыть приложение Microsoft Access, создать пустую базу данных и сохранить ее в доступном месте (впоследствии необходимо будет создать для нее DSN), добавить новую таблицу с именем emails и теми же типами данных полей, которые были опи+ саны выше. База данных Access будет доступна с помощью тех же ODBC+функций, что и база данных SQL Server.

ODBC 795

Рис. Г.2.

Создание системного DSN

Сценарий может подключиться к ODBC+базе данных, если будет доступна вся не+ обходимая информация: имя сервера баз данных, имя базы данных (или файла базы данных), используемый драйвер, имя/пароль (если нужно) и т.д. Эта информация может присутствовать в строке подключения или храниться (в Windows+системах) в DSN (Data Source Name ++++++ имя источника данных). В приведенном ниже примере показано, как создать DSN в Windows 2000.

1.Откройте Источники данных (ODBC) (Пуск Программы Администрирование Источники данных (ODBC)).

2.Выберите вкладку Системный DSN и нажмите кнопку Добавить. В появившемся диалоговом окне выберите соответствующий драйвер, как показано на рис. Г.3.

3.Нажмите кнопку Готово.

4.В следующем диалоговом окне введите имя DSN (оно впоследствии будет ис+ пользоваться в PHP+коде для подключения к базе данных; в примере использу+ ется имя ‘‘bphp5’’), краткое описание и SQL Server, к которому следует подклю+ читься, см. рис. Г.4.

796 Приложение Г

Рис. Г.3.

Рис. Г.4.

5.Нажмите кнопку Далее. В следующем диалоговом окне (рис. Г.5) оставьте на+ стройки по умолчанию.

ODBC 797

Рис. Г.5.

6.Нажмите кнопку Далее. Замените используемую по умолчанию базу данных на BPHP5 (рис. Г.6).

Рис. Г.6.

798Приложение Г

7.Нажмите кнопку Далее. В следующем окне оставьте настройки по умолчанию или измените язык системных сообщений SQL Server на русский (рис. Г.7).

Рис. Г.7.

8.Нажмите кнопку Готово. Должно появиться окно с перечнем сделанных на+ строек (рис. Г.8).

Рис. Г.8.

ODBC 799

9.Нажмите кнопку Проверить источник данных. Должно появиться окно с ре+ зультатами проверки (рис. Г.9).

Рис. Г.9.

10.Если проверка прошла успешно, то источник данных готов к использованию.

Чтобы создать DSN для базы данных Access, необходимо выбрать драйвер Access вместо драйвера SQL Server на этапе 2. Затем появится возможность указать созданный ранее файл базы данных, а также имя и пароль, если они были установлены для этой ба+ зы данных. После этого созданный DSN можно использовать для подключения к ука+ занной базе данных Access так же, как и для подключения к базе данных SQL Server.

Использование ODBC-функций PHP

В PHP включено более 40 ODBC+функций, позволяющих выполнять множество операций от создания соединения и выполнения запросов до определения имен по+ лей и типов данных и возвращения ошибок. Ниже демонстрируется практическое ис+ пользование некоторых ключевых ODBC+функций.

Сценарий odbc.php создает подключение к базе данных, выбирает записи (если они есть), а также предоставляет возможность добавлять, редактировать и удалять за+ писи в таблице. Сценарий представлен единственной Web+страницей. Код сценария начинается с тела страницы, включающей HTML+таблицу для отображения данных:

<html>

<head>

<title>PHP5 ODBC для начинающих</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head>

<body bgcolor="#FFFFFF">

<form action="odbc.php" method="POST"> <table>

<tr>

<td>

800 Приложение Г

Функция odbc_connect() записывает идентификатор соединения в переменную $conn. Следует отметить, что имя DSN ("bphp5") используется в качестве первого параметра функции, за которым следуют пустые строки для имени пользователя и па+ роля. При необходимости можно указать тип курсора. Для этого в качестве необяза+ тельного четвертого параметра необходимо передать одну из специальных констант (SQL_CUR_DEFAULT, SQL_CUR_USE_DRIVER и т.д.).

<?php

//создаем соединение

$conn = odbc_connect("bphp5", "", "");

Когда пользователь пытается добавить запись, нажимая кнопку Добавить новый Email-адрес, запрос, заданный в виде строковой переменной $query, отправляется базе данных с помощью функции odbc_exec(). Первым параметром этой функции является переменная $conn, а вторым ++++++ $query.

//добавляем запись if(isset($_POST['add'])) {

$query = "INSERT INTO emails (emails) values('$_POST[email]');"; odbc_exec($conn,$query);

echo "<h3>Email-адрес добавлен</h3><br><br>";

}

Хотя этот пример очень прост и в нем нет никакой проверки ошибок, можно использовать функцию odbc_error(), а затем получить сообщение об ошибке (если таковая возникла) с помощью функции odbc_errormsg().

Следующий фрагмент кода предназначен для обновления данных таблицы emails. Запись, определенная пользователем, идентифицируется с помощью значения, встав+ ленного в скрытое поле $up_id (это значение вставляется в поле в ответ на выбор поль+ зователем e+mail+адреса из выпадающего списка, код которого формируется ниже):

//редактирование записи if(isset($_POST['update'])) {

$query = "UPDATE emails SET emails = '$_POST[up_email]' WHERE email_id=$_POST[up_id];";

odbc_exec($conn,$query);

echo "<h3>Email-адрес изменен</h3><br><br>";

}

SELECT+запрос к таблице emails извлекает выбранную запись, а затем записывает значение id в скрытое поле с именем "up_id":

//получаем запись, соответствующую выбору пользователя if(isset($_POST['select'])) {

$query = "SELECT * FROM emails WHERE email_id=$_POST[select_id];"; $res = odbc_exec($conn,$query);

$rec = odbc_fetch_array($res,0);

//вставляем значение поля email_id выбранной записи в скрытое поле

?>

<input type=hidden name="up_id" value="<? echo $rec[email_id];?>">

Форма позволяет узнать текущее значение поля emails (email+адрес) выбранной записи. Кроме того, в форме имеются кнопки Обновить и Удалить для модификации или удаления записи. Приведенный ниже HTML+код используется исключительно для форматирования:

ODBC 801

<table border="0" cellspacing="0" cellpadding="2"> <tr valign="top">

<td bgcolor="#003399">

<table width="619" height="11" bgcolor="#FFFFFF" cellpadding="4" cellspacing="0">

<tr>

<td colspan="2" class="tablecell"> </td>

</tr>

<tr>

<td width="150" class="tablecell">Email-адрес</td> <td width="469" class="tablecell">

<input type="text" name="up_email" value="<? echo $rec[email_address];?>" size="60">

</td>

</tr>

<tr>

<td width="150"></td> <td width="494">

<table border="0" cellspacing="0" cellpadding="4"> <tr>

<td>

<input type="submit" value="Обновить" name="update"> </td>

<td>

<input type="submit" value="Удалить" name="delete"> </td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table>

<table border="0" cellspacing="0" cellpadding="4" align="center"> <tr>

<td height="10"></td> </tr>

<tr>

<td align="center"> <?

}

Приведенный ниже PHP+код выполняет запрос на удаление записи. Удаляемая за+ пись указывается таким же способом, как и запись для редактирования (в скрытом по+ ле "up_id" указывается идентификатор):

//удаляем запись if(isset($_POST['delete'])) {

$query = "DELETE FROM emails WHERE email_id=$_POST[up_id];";

odbc_exec($conn,$query);

echo "<h3>Email-адрес удален</h3>";

}

Ниже приведен выполняемый по умолчанию код, который отображает адреса из таб+ лицы emails при первоначальном открытии страницы. Он выполняется каждый раз при выводе страницы и показывает текущую запись в таблице. Функция odbc_exec() при+ сваивает переменной $res результат выполнения запроса; функция odbc_fetch_row() выбирает строку из $res; функция odbc_result() определяет значение указанного поля (первым параметром функции odbc_result() является переменная $res, а имя поля указывается в качестве второго параметра). Цикл while() используется для обработки

802 Приложение Г

выбранных строк, и так как он выполняется внутри HTML+дескриптора <select>, здесь также выводятся HTML+теги <option> для всех имеющихся e+mail+адресов:

//извлекаем все записи и помещаем их в выпадающий список $query = "SELECT * FROM emails ORDER BY email_id;";

$res = odbc_exec($conn,$query); ?>

<select name="select_id"> <?

while (odbc_fetch_row($res)) {

$email_id = odbc_result($res,"email_id"); $email = odbc_result($res,"email");

?>

<option value="<? echo $email_id; ?>">

<? echo "Идентификатор Email-адреса:" . $email_id . ":" . " Email-адрес: "

. $email; ?> </option> <?

} ?>

</select>

<input type="submit" name="select" value="Выбрать Email-адрес"> </td>

</tr>

</table>

Следующий HTML+код выводит форму для добавления новых e+mail+адресов:

<table border="0" cellspacing="0" cellpadding="2" align="center">

<tr>

<td bgcolor="#003399">

<table width="619" cellpadding="4" cellspacing="0"

align="center"

bgcolor="#FFFFFF">

<tr>

<td colspan="2" class="tablecell"> </td> </tr>

<tr>

<td width="150" height="29">Email-адрес</td> <td width="494" height="29">

<input type="text" name="email" size="60"> </td>

</tr>

<tr>

<td width="130"></td>

<td width="477">

<input type="submit" value="Добавить новый Email-адрес" name="add">

</td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table>

</form>

</body>

</html>

Откройте страницу odbc.php в браузере. Она должна выглядеть аналогично рис. Г.10. Добавьте несколько e+mail+адресов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]