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

metoda / Ml_ITIn_2013

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

271

Рис. 3.289. Сообщение раскрывающее суть ошибки.

Для целей обучения, далее приводятся сообщения из кода программы, описывающие сведения о полях (строки 99-141) при использовании объектно-ориентированного синтаксиса PHP (рис. 3.290) и процедурного синтаксиса PHP (строки 142-189 рис. 3.280) результат которого приведен на рис. 3.291.

Рис. 3.290. Сообщение о составе и свойствах полей, использованных в запросе.

272

Рис. 3.291. Сообщение о составе и свойствах полей при использовании процедурного подхода.

Возвращаемый объект имеет следующие свойства:

name - имя поля

table - имя таблицы, которой принадлежит поле

max_length - максимальная длина поля

not_null - 1, если полю разрешено пустое значение

primary_key - 1, если поле является ключевым

unique_key - 1, если в поле допускаются только уникальные значения

multiple_key - 1, если в поле допустимо иметь повторяющиеся значения

numeric - 1, если поле числовое

blob - 1, если поле имеет тип BLOB

type - тип поля

unsigned - 1, если поле числовое беззнаковое

zerofill - 1, есле поле заполняется нулями

Мы рассмотрели основы использования баз данных MySQL из РНР. В следующем задании рассматриваются еще некоторые полезные функции, не упомянутые ранее.

273

Задание 4. Создание и удаление баз данных

Для создания новой базы данных MySQL из PHP-сценария применяется функция mysql_create_db(), а для удаления базы данных — mysql_drop_db().

Рассмотрим прототипы этих функций:

int mysql_create_db(string database, [int database_connection] ); int mysql_drop_db(string database, [int database_connection] ) ;

Обе функции используют имя базы данных и соединение. Если соединения нет, будет использоваться последнее открытое. Функции создают либо удаляют указанную базу данных. В случае успеха функции возвращают значение true, а в случае неудачи — false.

Обратите внимание ! В зависимости от версии PHP, функция mysql_create_db() может быть не включена в библиотеки PHP. Поэтому рекомендуется использовать SQL запрос.

274

Рис. 3.292. Исходный код С:\WebServers\home\localhost\www\php\Lab15_06.php.

Результат работы программы Lab15_06.php представлен на рис. 3.293.

Рис. 3.293. Результат работы Lab15_06.php.

275

Код программы Lab15_07.php показан на рис. 3.294, а результат представлен на рис. 3.295.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html><head>

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

<title>Форма ввода Lab15_07.php</title></head>

<body>

<?php

$host="localhost"; $user="root"; $DBName="proba"; $password="";

// Производим попытку подключения к серверу MySQL: if (!$db=mysql_connect($host, $user, $password))

{echo "<h2>MySQL Error!</h2>"; exit(); }//неудача //echo "<align='center'> Соединение с Mysql успешно"; echo "<p align='center'> Соединение с Mysql успешно "; $TableName="Table1";

$Link=mysql_connect($host, $user, $password); $query="SELECT * FROM $TableName";

$query_result=mysql_db_query($DBName,$query,$db) or die("Display error".mysql_error());

print("<table border=1 width=50% align=center>\n"); print("<tr><td>Name</td><td>Email</td><td>Comments</td></tr>"); while($Row=mysql_fetch_array($query_result))

{

print("<tr><td>$Row[FirstName] $Row[LastName]</td><td>$Row[Email]</td><td>$Row[Comments]</td></tr>\n ");

}

print("</table>"); mysql_free_result($query_result); mysql_close($Link);

?>

</body></html>

Рис. 3.294. Исходный код C:\WebServers\home\localhost\www\php\Lab15_07.php.

Рис. 3.295. Результат работы Lab15_07.php.

276

Другие интерфейсы PHP-баз данных

РНР поддерживает различные библиотеки, что дает возможность подключаться к огромному количеству баз данных, включая Oracle, Microsoft SQL Server, mSQL и PostgreSQL.

В целом принципы подключения и подачи запросов любой из этих баз данных одни и те же. Названия функций могут быть разными, разные базы данных могут иметь разную функциональность, но если вы можете подключиться к MySQL, то другие СУБД вряд ли поставят Вас в безвыходное положение.

Дополнительные темы.

Переменные окружения HTTP

Когда Web-браузер выполняет запрос к Web-серверу, он вместе с запросом посылает еще дополнительный список переменных. Эти переменные называются переменными окружения и могут использоваться для отображения динамического содержимого или авторизации пользователей.

Функция phpinfo () выводит большое количество информации о программном обеспечении Web-сервера, версии РНР, который вы запустили, и об основных переменных окружения HTTP. Чтобы посмотреть эту информацию, выполните следующие действия:

Создайте новый файл с помощью текстового или HTML редактора. Введите строку РНР-кода:

<?

phpinfo();

?>

Сохраните созданный файл с именем phpinfo.php в папке для документов вашего Web-сервера.

Запустите браузер, в поле Адрес (Address) введите

http://localhost/php/phpinfo.php

Настройка сервера

Вы считаете что все сделали правильно, но у Вас что-то не работает. Может, у Вас неправильно сконфигурирован сервер?

Если Вы "все сделали правильно", но Ваш код неработоспособен, или работает неправильно, не спешите отчаиваться. Возможно проблема не в Ваших руках, а в неверных настройках сервера. Вот список директив, которые имеют отношения к загрузке файлов:

277

В файле php.ini:

Если Вы хотите узнать, где расположен Ваш php.ini, выполните

<?php phpinfo(); ?>

file_uploads - возможность запретить или разрешить загрузку файлов в целом. По умолчанию On.

upload_max_filesize - максимальный размер файла, который может быть загружен. Если Вам необходимо работать с большими файлами, измените эту настройку. По умолчанию 2М. Не забудьте изменить post_max_size.

post_max_size - общее ограничение сверху на размер данных, передаваемых в POST запросе. Если Вам необходимо работать с большими файлами, или передавать несколько файлов одновременно, измените эту настройку. Значение по умолчанию 8М.

upload_tmp_dir - временная директория на сервере, в которую будут помещаться все загружаемые файлы. Проверьте, какие на нее выставлены права(если на данном этапе у Вас возникли сложности, смотрите пояснения в конце статьи). Такая директория должна существовать и у пользователя, под которым выполняется Apache, также должны быть права на запись в эту директорию. Если Вы работаете с включенным ограничением open_basedir - то временный каталог должен находиться внутри. Вам не нужно заботиться о ее чистке или об уникальности имен, PHP решает эту проблему за Вас.

В файле httpd.conf:

Прежде всего, убедитесь, что Вы используете веб-сервер Apache 1.3 (последняя версия на момент написания - 1.3.27). Если Вы используете Apache 2.0, Вам следует прочитать следующий отрывок из документации:

Do not use Apache 2.0 and PHP in a production environment neither on Unix nor on Windows.

Если Вы получили сообщение "POST Method Not Allowed", это означает, что надо искать что-то похожее на следующие директивы, и использовать ключевое слово Allow:

<Limit POST >

Order allow,deny Allow from all

</Limit>

Проблемы с загрузкой бинарных файлов - классический вопрос "почему бьются файлы при upload". Вот способ решения, предложенный Димой Бородином (http://php.spb.ru): В директории, где лежит скрипт, делаем файл .htaccess, в котором пишем: CharsetDisable On. В файл httpd.conf

дописать строки:

<Location /> CharsetRecodeMultipartForms Off

</Location>

278

Небольшие пояснения, к этому рецепту: вышеописанная проблема, когда загруженные на сервер архивы не распаковываются и картинки не отображаются, может возникать из-за того, что используется веб-сервер

Russian Apache. Директива CharsetDisable отключает модуль charsetprocessing module, т.е. никакой перекодировки при скачивании файлов, находящихся в данной папке, происходить не будет. Директива CharsetRecodeMultipartForms выключает перекодировку данных, переданных методом POST с заголовком Content-Type: multipart/form-data. Т.е. двоичные данные, переданные с такой настройкой, будут оставлены в первоначальном виде, а все остальное наполнение сайта будет перекодировано согласно текущим настройкам сервера.

Но при этом могут возникнуть осложнения: будьте готовы к тому, что в некоторых случаях текстовые части запросов вам придется перекодировать самостоятельно. Вот что по этому поводу говорится в документации:

Коротко о правах на файлы

Проблемы с правами на сервере (upload_tmp_dir)

В *nix-подобных операционных системах каждой папке, файлу, ссылке выставлены соответствие права доступа. Они могут выглядеть как rwx-rw-r- или же как число 754.

Доступность файла или каталога зависят от идентификатора пользователя и идентификатора группы, в которую он входит. Режим в целом описывается в терминах трех последовательностей, по три буквы в каждой:

Владелец Группа Прочие

(u) (g) (o) rwx rwx rwx

Здесь владелец, члены группы и все прочие пользователи обладают правами чтения файла, записи в него и его выполнения. Права - любая осмысленная комбинация следующих букв:

r Право на чтение. (4)

wПраво на запись. (2)

xПраво на выполнение (поиск в каталоге). (1)

Для того, что бы загрузка файлов на сервер работала корректно, необходимо реализовать один из двух вариантов.

Установить владельцем каталога пользователя, с чьими привелегиями выполняется apache. Это можно узнать из файла httpd.conf или просмотрев список процессов на сервере. Права на каталог должны быть 700 (rwx------).

Независимо от того, кто является владельцем каталога, установить права 777 (rwxrwxrwx).

279

Cписок литературы

Основной:

1. Веллинг Л., Томсон Л. Разработка Web-приложений с помощью PHP

и MySQL. 3-е издание. – М.: Издательский дом ―Вильямс‖. 2008. – 875 c.

Дополнительный:

2. Копейкин М. В., Спиридонов В. В., Шумова Е. О. Базы данных. Основы SQL реляционных баз данных: Учеб. пособие. – СПб.: СЗТУ, 2006.

– 177 c.

3. Базы данных: Метод. указ. к курсовому проектированию. / Сост.: М.В. Копейкин, В.В. Спиридонов, Е.О. Шумова – СПб.: СЗТУ, 2005. - 172 c.

4. Базы данных: Методический комплекс по курсу и указания к выполнению лабораторных работ. / Сост.: М.В. Копейкин, В.В. Спиридонов, Е.О. Шумова – СПб.: СЗТУ, 2005. - 172 c.– Спб.: СЗТУ. 2004. – 100 с.

Лабораторные работы в среде ORD представлены в [4. Лабораторные работы в среде MySQL представлены ниже.

Соседние файлы в папке metoda