Работа с MySQL через PHP - с самого
начала + все в одном, или как я нашел
ответы на все интересующие меня вопросы.
v.1.0
Если вы читаете эту статью, это значит,
Вы, решили освоить технологию PHP и
связать её с базами данных (MySQL, Oracle, DBase...).
По своему опыту знаю, что сначало лезим в
Интернет и пытаемся найти информацию,
которая как кажется расскажет нам обо
всем. Но на практике оказывается, что
информации из разных источников много,
все по кусочкам, приходится доходить
методом научного тыка... Поэтому я и пишу
для Вас мои уважаемые читатели.
Содержание:
1. Установка PHP,
MySQL
2. Предоставление доступа
к базам данных
3 Изучение MySQL
4 Изучение PHP
5. Работа с БД MySQL на
примерах
6. Работа с БД Oracle на примерах
1. Установка PHP, MySQL
Папав на сайт http://apache.ru
я наткнулся на статью "Apache + Perl + PHP3 +
MySQL для Windows 95/98: руководство по установке",
за основу я её и возьму.
Дистрибутивы
- Apache
версии 1.3.6
- PHP
версии 3.0.13
- MySQL
версии 9.13
1 .1
Введение - зачем нужен домашний
виртуальный сервер?
"Ну к чему все это, лучше бы
водки выпили"
Из писем Белинского Гоголю
Если Вы читаете этот документ, а также
если у Вас установлен Windows 95/98 (а наше
личное мнение такое, что эта
операционная система наиболее
сбалансирована с точки зрения
интерфейса и удобства работы), значит, Вы
уже столкнулись с проблемой
виртуального домашнего сервера, а
точнее, с проблемой его отсутствия! Эта
небольшая статья поможет Вам скачать
и установить один из лучших
серверов - Apache, а также те приложения, из-за
отсутствия которых народ в бешенстве
сметает все остальные сервера (например,
Sambar Server) со своего многострадального
жесткого диска и устанавливает Apache для
Windows 95/98. Имеются в виду, конечно, Perl, PHP3 и
MySQL, также работающие под Windows. Прочитав
эту статью и скачав дистрибутивы, Вы
будете вооружены всеми инструментами,
которые так необходимы для
профессиональной работы в Web!
Обращаем Ваше внимание: бытует мнение,
что MySQL (а тем более для Windows 95/98) нельзя
получить бесплатно, а можно только
купить. Так вот, можете вздохнуть с
облегчением: MySQL для Windows 95/98 существует,
и ее установка не будет стоить Вам и
копейки!
Поговорим теперь с теми
пользователями Windows 95/98, которые
заглянули сюда из простого любопытства.
Часто возникает ситуация, когда
необходимо проверить полный вид html-страницы.
Однако чаще всего это невозможно при
работе дома - технологии SSI, CGI и, конечно,
PHP, например, точно требуют сервера. Как
же быть? Не стоит впадать в апатию - нужно
просто установить на Ваш домашний
компьютер (пусть даже и не подключенный
к Интернет) специальную программу - Web-сервер.
Вообще-то серверов существует множество
- плохие и хорошие, медленные и быстрые...
Мы же выбрали сервер, подходящий под
последние две категории, - Apache. Самое
главное то, что это чуть ли не
единственный сервер, который позволяет
работать в Windows 95/98 с технологиями PHP, CGI и
Perl-скриптами одновременно так же просто
и непринужденно, как будто у Вас стоит Unix.
1.2. От слов к делу - установка
Apache
Итак, Вы решились установить на свой
компьютер Apache для Windows 95/98. В таком случае
Вам следует запастись терпением и для
начала скачать дистрибутив сервера -
файл с именем apache_setup.exe
(3.061.629 байт). Скачали? Прекрасно. Теперь
самое интересное - настройка Apache для
Вашей системы.
Важно: мы попросим Вас в точности
выполнять перечисленные ниже шаги, не
пропуская и не откладывая ни одного. В
этом случае все заработает - это
проверено.
Этап первый - установка
- Определитесь с директорией, в
которую Вы будите устанавливать Apache. Все
дальнейшие рассуждения основаны на
том, что Вы выбрали для этой цели такой
каталог: f:\usr\local\apache Если диска F:
у Вас нет, или если Вы не хотите его
захламлять, советуем сделать одно из
трех:
- Создайте диск F: с помощью
какой-нибудь программы для
виртуальных разделов (например, с
помощью встроенной в Windows 95/98
программы DriveSpace). Это самое лучшее
решение, и с точки зрения экономии
памяти, и с точки зрения
быстродействия. Ведь что такое Web-сайт,
как не набор очень небольших файлов?
А DriveSpace как раз и оптимизирует
работу с такими файлами.
- Сделайте виртуальный диск F:.
Для этого создайте где-нибудь на
любом диске директорию, которая в
будущем будет являться корневой для
диска F:. Предположим, Вы
выбрали C:\INTERNET. Далее, в начале
файла c:\autoexec.bat пропишите
такую строку:
subst f: C:\INTERNET
и перезагрузите компьютер. У вас
должен появиться виртуальный
пустой диск F:.
ВНИМАНИЕ:
имеются сведения, что в Windows 95/98 есть
ошибка, в результате которой иногда
subst-пути "сами по себе"
преобразуются в абсолютные. То есть,
например, иногда в рассмотренном
выше примере команды
f:
cd \
cd \
dir
(а точнее, команда dir в своем
заголовке) ошибочно выведут, что
текущая директория C:\ (а не F:\,
как это должно быть). Указанная
ошибка чаще всего проявляется в
неработоспособности Perl-транслятора.
Так что лично мы не рекомендуем
Вам использовать subst. Вместо
этого воспользуйтесь пунктом 1.
- Наконец, Вы можете всего этого не
делать и поставить Apache на любой
другой диск, только тогда Вам
придется немного тяжелее при
выполнении всех остальных действий.
Нужно будет все указываемые пути
заменять на Ваши собственные, а это
крайне неприятно. Еще раз
настоятельно рекомендуем
воспользоваться диском F:.
Рекомендуем все же разместить
Apache в указанном в начале каталоге, так
как он максимально соответствует
каталогу для реального Web-сервера
Интернета. Ведь чем ближе в плане
конфигурации мы будем к такому
серверу, тем лучше и эффективнее
сможем работать.
- Запустите только что скачанный файл.
В появившемся диалоге нажмите кнопку Yes,
а затем - кнопку Next.
- Теперь нажмите Browse. Вручную
задайте директорию для установки: f:\usr\local\apache
и нажмите кнопку OK.
- Выберите тип установки - Сustom и
уберите флажок Source Code (если,
конечно, не хотите посмотреть
исходные тексты Apache). Этим Вы
сэкономите себе 3 Мбайта.
- Нажмите Next и подождите, пока
будут копироваться файлы Apache.
- На запрос о перезагрузке компьютера
ответьте "Перезагрузить".
Поздравляем - Apache установлен! Теперь
самое неприятное - его настройка.
Этап второй - настройка файла
конфигурации Apache mime.types
- Откройте директорию f:\usr\local\apache\conf.
Откройте находящийся там файл mime.types.
- Найдите в нем такую строчку:
text/html html htm
Измените ее на
text/html html htm shtml shtm sht
Следует заметить, что если Вы по каким-то
причинам не хотите портить файл mime.types,
то можно вместо этого прописать в файле
httpd.conf (см. ниже) строки вида
AddType text/html html htm shtml shtm sht
Этап третий - настройка файла httpd.conf
Внимание! Это - самый ответственный
момент установки. Просим соблюдать
инструкции БУКВАЛЬНО.
- Откройте директорию f:\usr\local\apache\conf
Откройте находящийся там файл httpd.conf.
Это - единственный файл, который Вам
осталось настроить. Вам предстоит
найти и изменить в нем некоторые
строки, а именно те, о которых
упоминается далее. Во избежание
недоразумений не трогайте все
остальное. Следует заметить, что в нем
каждый параметр сопровождается
несколькими строками комментариев,
разобраться в которых с первого раза
довольно тяжело. Поэтому не обращайте
на них внимание.
- В поле ServerAdmin укажите Ваш E-mail
адрес, который будет показываться в
сообщениях об ошибке сервера.
Например:
ServerAdmin my@email.com
- В поле ServerName напишите любое слово
- на работе это не сказывается,
например:
ServerName ApacheServer
Только не забудьте раскомментировать
поле ServerName, то есть убрать символ
"#" перед этим параметром (по
умолчанию он закомментирован)!
- В поле DocumentRoot укажите ту
директорию, в которой будут храниться
Ваши html-файлы, например:
DocumentRoot f:/www
Разумеется, можете указать и любую
другую директорию, если хотите. В
любом случае, не забудьте ее
создать, лучше сделайте это прямо
сейчас!
- Найдите блок, начинающийся строкой <Directory
/> и заканчивающийся </Directory>
(вообще, такие блоки обозначают
установки для заданной директории и
всех ее поддиректорий). Его нужно
изменить на:
<Directory />
Options Indexes Includes
AllowOverride All
</Directory>
Таким образом, в этом блоке будут
храниться установки для всех
директорий по умолчанию (т.к. это -
корневая директория).
- Найдите аналогичный блок,
начинающийся <Directory "f:/usr/local/apache/htdocs">
и заканчивающийся </Directory>. Там
будет много комментариев, не
обращайте на них внимание. Этот блок
следует заменить на:
<Directory "f:/www">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Это - установки для директории с
Вашими html-документами. Если хотите,
можете установить другую директорию,
главное, чтобы она совпадала с той,
которая прописана в параметре DocumentRoot
- Идем дальше. Установите UserDir,
например так:
UserDir f:/home
Это будет директория, в которой
хранились бы домашние страницы
пользователей, если бы это был
настоящий Web-сервер, а также корневые
каталоги виртуальных хостов (см. ниже).
Не забудьте также создать этот
каталог.
- Установите DirectoryIndex так:
DirectoryIndex index.htm index.html
Это - так называемые файлы индекса,
которые автоматически выдаются
сервером при обращении к какой-либо
директории, если не указано имя html-документа.
В принципе, можно добавить сюда и
другие имена, например, index.phtml,
если Вы будите работать с PHP и т.д.
- Найдите и пропишите такой параметр:
ScriptAlias /cgi-bin/ "f:/cgi-bin/"
Да, именно так, с двумя слэшами. Это
будет та директория, в которой должны
храниться Ваши CGI-скрипты. Если хотите,
можете задать другое имя, например:
ScriptAlias /mycgi/ "f:/mycgidir/"
Подобный параметр говорит Apache о том,
что, если будет указан путь вида http://localhost/cgi-bin,
то на самом деле следует обратиться к
директории f:/cgi-bin.
- Теперь следует найти и настроить
блок параметров, начинающийся с <Directory
"f:/cgi-bin"> и заканчивающийся </Directory>.
Это - установки для Вашей CGI-директории
(если Вы установили для нее другое имя
на предыдущем шаге, соответственно
модифицируйте путь). Там должно быть:
<Directory "f:/cgi-bin">
AllowOverride All
Options ExecCGI
</Directory>
- Настройте следующий параметр:
AddHandler cgi-script .bat .exe
Это говорит Apache о том, что файлы с
расширением .exe и .bat нужно
рассматривать как CGI-скрипты.
- И последнее - установите:
AddHandler server-parsed .shtml .shtm .sht
Или, если Вы хотите, чтобы и обычные
файлы html обрабатывались SSI, напишите
так:
AddHandler server-parsed .shtml .shtm .sht .html .htm
Поздравляем - Вы настроили свой Apache, и
он должен уже работать! Для запуска
сервера нажмите Пуск->Программы->Apache
Web Server->Start Apache as console app, при этом
появится окно, очень похожее на Сеанс
MS-DOS, и ничего больше не произойдет. Не
закрывайте его и не трогайте до конца
работы с Apache.
Несколько слов о том, как можно
упростить запуск и завершение сервера. В
Windows можно назначить любому ярлыку
функциональную комбинацию клавиш, нажав
которые, Вы запустите этот ярлык. Так что
щелкните правой кнопкой на панели задач,
в контекстном меню выберите Свойства,
затем Настройка меню и кнопку Дополнительно.
В открывшемся Проводнике назначьте
ярлыку Start Apache as console app комбинацию Ctrl+Alt+A,
а ярлыку Shutdown Apache as console app - Ctrl+Alt+S
Вот шаги, которые можно проделать для
проверки работоспособности сервера:
- Проверка html: в директории f:/www
с html-документами Apache создайте файл index.html.
Теперь запустите браузер и наберите:
http://localhost/index.html
или просто
http://localhost/
Загрузится Ваш файл.
- Проверка CGI: в директории f:/cgi-bin
для CGI-скриптов создайте файл test.bat
с таким содержанием:
@echo off
echo Content-type: text/html
echo.
echo.
dir
Теперь в браузере наберите:
http://localhost/cgi-bin/test.bat
В окне отобразится результат команды
DOS dir.
- Проверка SSI: аналогична проверке
html. Используйте, например, директиву
<!--#exec cgi="/cgi-bin/test.bat"-->
1.3. Виртуальные хосты Apache - как это
настроить?
"Виртуальные хосты - хосты,
имеющие уникальный адрес
в Интернет, эмулируемые и
поддерживаемые сервером"
Древнее языческое заклинание
Итак, Вы установили Apache. Получили,
таким образом, директорию f:/www для
хранения документов и f:/cgi-bin для CGI.
Но вот беда: в Интернете вы
поддерживаете несколько серверов, а Apache
создал для вас только один. Конечно,
можно структуру этих несколькох
серверов хранить на одном сервере,
однако проще и удобнее было бы создать
несколько виртуальных хостов с
помощью Apache, например, один с именем serv1
и адресом 127.0.0.2, а другой - с именем serv2
и адресом 127.0.0.3. (Конечно, вместо "serv1"
и "serv2" Вам нужно будет указать
желаемые имена Ваших виртуальных хостов.
Советуем назвать их так же, как и на
Вашем настоящем Web-сервере - это может
многое упростить при программировании
скриптов.)
Как это принято в Unix, каждый сервер
будет представлен своим каталогом в
директории f:/home с именем,
совпадающим с именем сервера. Например,
сервер serv1 будет храниться в
директории f:/home/serv1, которую Вам
необходимо создать прямо сейчас. В этой
директории будут находиться:
- файл access.log с журналом доступа к
виртуальному серверу.
- файл errors.log с журналом ошибок
сервера.
- директория www, где будут
храниться html-документы.
- директория cgi для хранения CGI-программ.
Последние две директории (www и cgi)
Вам тоже необходимо создать прямо
сейчас.
Далее, для установки виртуального
хоста необходимо сделать некоторые
изменеия в файле конфигурации Apache httpd.conf
(см. выше), а также в некоторых файлах Windows.
Вот необходимые действия:
- Откройте директорию f:\usr\local\apache\conf.
Откройте находящийся там файл httpd.conf.
Перейдите в его конец, Вам предстоит
добавить туда несколько строк.
- Пропишите следующие строки в конце
файла после всех комментариев:
#----serv1
<VirtualHost 127.0.0.2>
ServerAdmin webmaster@serv1.ru
ServerName serv1
DocumentRoot "f:/home/serv1/www"
ScriptAlias /cgi/ "f:/home/serv1/cgi/"
ErrorLog f:/home/serv1/error.log
CustomLog f:/home/serv1/access.log common
</VirtualHost>
При желании можно добавить и другие
параметры (например, DirectoryIndex и т.д.)
Вообще, не переопределенные параметры
наследуются виртуальным хостом от
главного.
- Теперь надо немного подправить
системный файл hosts, который
находится в C:\WINDOWS\hosts (такого
файла может не быть по умолчанию - в
этом случае его надо создать). hosts
- обычный текстовый файл, и в нем
обычно заранее прописана только одна
строка:
127.0.0.1 localhost
именно эта строка и задает
соответствие имени localhost адресу 127.0.0.1.
(Ради справедливости следует сказать,
что имя localhost работает и без
указанной выше строки. Ну и выдумщики
же эти парни из фирмы Microsoft!) Для нашего
виртуального хоста надо добавить
соответствующую строчку, чтобы файл
выглядел так:
127.0.0.1 localhost
127.0.0.2 serv1
Этим Вы создадите виртуальных хост со
следующими свойствами:
- Имя - serv1
- Доступен по адресу http://serv1 (или http://127.0.0.2).
- Расположен, соответственно, в
директории f:/home/serv1.
- Директория для хранения документов - f:/home/serv1/www,
доступная по адресу http://serv1/.
- Директория для CGI - f:/home/serv1/cgi,
доступная по адресу http://serv1/cgi/
- Файлы журналов хранятся в f:/home/serv1
Ну вот, мы создали один виртуальный
хост! Если будет необходимо сделать
второй, нужно просто проделать
аналогичные действия, заменив параметры,
связанные с расположением хоста на
диске. Главное, не забудьте в этом случае
указать другой IP-адрес (лучше всего
указывать их последовательно, начиная с 127.0.0.2,
затем 127.0.0.3 и т.д. - в этом случае все
работает корректно). Желательно также
для этих целей не указывать IP-адрус http://127.0.0.1,
так как это - адрес главного сервера.
Кстати, необходимо заметить, что
главный хост (невиртуальный, тот,
который мы создали в раздулах 1 и 2) по-прежнему
доступен по адресу http://127.0.0.1 или http://localhost.
Более того, его директория cgi-bin "видна"
всем созданным виртуальным хостам, так
что Вы можете ее использовать.
1.4. Установка PHP версии 3
В отличие от установки Apache, установка
PHP короче, однако мы бы не сказали, что
проще. Дело в том, что, во-первых, у PHP нет
нормальной setup-программы, как у Apache, а во-вторых,
при его установке необходимо также
настраивать сервер.
Итак, прежде всего поговорим о
каталоге, в котором у Вас будут
находиться файлы PHP. В дистрибутиве по
умолчанию стоит такой:
f:/usr/local/php3
Если Вы физически не можете или просто
не хотите иметь такой каталог (хотя, если
Вы читали инструкцию по установке Apache,
все должно быть в порядке), то Вы вольны
установить PHP в другой каталог, но тогда
Вам предстоит следующее: в файле php_iis_reg.inf
из дистрибутива PHP найти ВСЕ строки "f:/usr/local/php3"
(их там, кстати, 8 штук) и заменить их на
тот каталог, где Вы предполагаете
разместить PHP. Могу сразу сказать, что
это не самое приятное провождение
времени, но уж ничего не поделаешь,
такова жизнь...
Как обычно, приведем по порядку те
действия по установке PHP, которые у нас
привели к результату.
Установка PHP
- Создайте директорию f:/usr/local/php3 (если
хотите другое имя, см. рассуждения
выше). Это - та директория, в которую
будет установлен PHP.
- Скачайте дистрибутив PHP - файл с
именем php3_setup.exe
(1.970.356 байт), желательно в только что
созданную директорию. Это
саморазворачивающийся zip-архив,
который Вы должны будете запустить,
чтобы разархивировать. По умолчанию
он развернется в текущую директорию,
так что будьте внимательны.
- Еще раз напоминаем: если Вы решили
установить PHP в другую директорию, Вам
необходимо вручную отредактировать
файл php_iis_reg.inf с целью замены в нем
имен директории на нужную (см. выше).
- В файле php3.ini из дистрибутива
есть закомментированные строки,
выглядящие так:
;extension=имя_модуля.dll
Если Вы хотите включить какой-нибудь
модуль (по умолчанию уже включена
поддержка GD и mSQL), раскомментируйте
соответствующую строку (уберите точку
с запятой).
- Теперь в Проводнике Windows нажмите
правой кнопкой мыши на файле php_iis_reg.inf
и выберите в контекстном меню пункт Установить
- этим Вы автоматически добавите в
Реестр некоторые установки,
касающиеся PHP.
- Скопируйте файл php3.ini в каталог с
Windows (например, в c:\windows);
Настройка Apache
- В файл конфигурации Apache conf/mime.types
добавтьте такую строку:
application/x-httpd-php3 phtml php3
- Теперь откройте файл conf/httpd.conf и
добавьте в его конец (но перед блоком
виртуальных хостов, если они там есть)
такие строки:
<Directory "f:/usr/local/php3">
Options ExecCGI
</Directory>
ScriptAlias "/__php_dir__/" "f:/usr/local/php3/"
Action application/x-httpd-php3 "/__php_dir__/php.exe"
Ну вот, пожалуй, и все. Если Вы все
сделали правильно, то PHP установлен.
Проверьте его работоспособность с
помощью простого скрипта, например
такого:
<?
echo "It works!<br>\n";
phpinfo();
?>
Напоминаем, что php-скрипты - не то же
самое, что cgi-скрипты. В частности, если
cgi-скрипты обычно располагают в /cgi-bin/,
то php-скрипт должен лежать в директории с
документами. Иными словами, файл в этом
примере должен называеться примерно так:
f:/www/test.php3
1.5. Установка MySQL
Сначала определимся: зачем же вообще
нужны базы данных Web-программисту?
Неужели не проще писать все самому? Ведь
обычно объем данных не очень велик (если
Вы только не пишите поисковую систему).
Наш личный опыт таков: оказывается,
стоит затратить какое-то время на
изучение MySQL - это удивительно мощный
инструмент, который сэкономит в будущем
немало часов, потраченных на отладку "взбесившегося"
скрипта.
Итак, Вы решили установить у себя на
локальном Apache поддержку MySQL. Как ни
странно, это даже во многом проще, чем
заставить работать Perl. Прежде чем
привести точные инструкции, хотелось бы
уточнить два момента:
- Эта статья не претендует ни в коей
мере на то, чтобы быть учебником по MySQL.
Предполагается, что Вы уже знаете, как
работать с этой базой данных. Максимум,
что здесь описывается - это то, как
заставить MySQL работать под Window 95/98.
- В дальнейшем будем считать, что Apache у
Вас установлен именно там, где это
рекомендовалось выше.
Что ж, приступим.
- Для начала запаситесь терпением и
скачайте дистрибутив MySQL - mysql.zip.
Как можно заметить, он довольно
большой. Затем разверните его в любую
удобную Вам директорию.
- Запустите setup.exe. Он спросит,
действительно ли Вы хотите установить
MySQL. После того, как Вы ответите
утвердительно, файлы начнут
копироваться в директорию c:/mysql, т.е.
он даже не спросит Вас, куда
устанавливать MySQL. Ничего страшного.
- Теперь, если Вы любите порядок,
можете скопировать директорию c:/mysql
в какое-нибудь более приличное место -
например, f:/usr/local/. Только после
этого строго следуйте указаниям в
статье.
- Создайте в директории f:/usr/ такие
два .bat-файла:
- server.bat:
@echo off
f:\usr\local\mysql\bin\mysqld.exe --basedir f:/usr/local/mysql
f:\usr\local\apache\Apache.exe
- shutdown.bat:
@echo off
f:\usr\local\apache\Apache.exe -d f:\USR\LOCAL\APACHE -k
shutdown
"f:\usr\local\mysql\bin\mysqladmin.exe" -u root
shutdown
Файл server.bat Вы будете запускать,
когда захотите "включить" Apache и
одновременно MySQL (ясно, что
бессмысленно запускать MySQL без
сервера), а shutdown.bat - для
завершения работы Apache и MySQL. Очень
важно завершать работу MySQL
правильно - иначе могут быть испорчены
таблицы баз данных. Собственно, для
этого мы и сделали эти два .bat-файла.
(Кстати говоря, в отличие от Apache, у MySQL
нет своего окна - ее процесс можно
увидеть, лишь нажав Ctrl+Alt+Del. Это еще
одна причина существования shutdown.bat).
Теперь для удобства можно создать
ярлыки на Рабочем столе для этих
файлов. Рекомендуем также назначить
этим ярлыкам "горячие" клавиши:
например, для запуска сервера - Ctrl+Alt+A,
а для завершения работы - Ctrl+Alt+S.
Кроме того, лучше поставить у этих
ярлыков параметры "Запускать
свернутыми в значок". Все это сильно
упростит жизнь в дальнейшем.
- Что ж, считайте, MySQL уже установлена.
Осталось только создать базу данных.
Для этого следует запустить f:/usr/local/mysql/bin/mysqladmin
с ключем create имя_базы. Например,
если мы хотим создать базу testbase,
нужно ввести:
f:/usr/local/mysql/bin/mysqladmin create testbase
- Если Вы планируете использовать MySQL в
скриптах на PHP, проверьте,
раскомментирована ли в файле php3.ini
(расположенном в директории с PHP и в c:\windows)
следующая строка:
extension=php3_mysql.dll
Если в ее начале стоит точка с запятой,
уберите ее - иначе PHP не сможет
опознавать функции для работы с MySQL
Поздравляем - теперь можно работать!
Если хотите, можете проверить
работоспособность MySQL следующим
скриптом на PHP3 (скажем, расположенном
в f:/www/test.php3):
<?
Error_Reporting(1+2+4);
define("DBName","testbase");
define("HostName","localhost");
define("UserName","root");
define("Password","");
if(!mysql_connect(HostName,UserName,Password))
{ echo "Не могу соединиться с базой ".DBName."!<br>"; exit; }
// Создаем таблицу test. Если такая таблица уже есть,
// сообщение об ошибке будет подавлено, т.к. используется "@"
@mysql(DBName,"create table test(id int,a text)");
// Вставляем в таблицу 10 записей
for($i=0; $i<10; $i++)
{ $id=time();
mysql(DBName,"insert into test(id,a) values($id,'Строка $i!')");
}
// Выводим все записи
$r=mysql(DBName,"select * from test");
for($i=0; $i<mysql_numrows($r); $i++)
{ $f=mysql_fetch_array($r);
echo "$f[id] -> $f[a]<br>\n";
}
?>
Обращаем Ваше внимание на
макросы DBName, HostName, UserName и Password.
DBName должен содержать имя базы
данных. HostName - всегда localhost,
ведь мы работаем на локальном
компьютере. В макросе UserName проще
всего подставлять root, который
является собственником всех таблиц.
При установке MySQL пользователю root
не назначается пароль, так что макрос Password
равен пустой строке.
На сайте http://www.InfoCity.kiev.ua (-виртуальный
город технической документации) я
обнаружил следующее:
СУБД MySQL использует специальную базу
данных для предоставления прав доступа
к своим базам данных. Эти права могут
базироваться на именах серверов и/или
пользователей и предоставляться для
одной или нескольких баз данных
Пользовательские аккаунты могут быть
снабжены паролями. При обращении к базе
данных, пароль шифруется. Поэтому он не
может быть перехвачен и использован
посторонним (это мнение автора СУБД...).
СУБД MySQL имеет три таблицы, а именно:
База данных: mysql Таблица: db
Поле
| Тип
| Null
| Ключ
| Умолчание
| Extra
|
Хост
| char(60)
|
| PRI |
Db
| char(32)
|
| PRI |
Пользователь
| char(16)
|
| PRI |
Select_priv
| char(1)
|
|
| N |
Insert_priv
| char(1)
|
|
| N |
Update_priv
| char(1)
|
|
| N |
Delete_priv
| char(1)
|
|
| N |
Create_priv
| char(1)
|
|
| N |
Drop_priv
| char(1)
|
|
| N |
База данных: mysql Таблица: host
Поле
| Тип
| Null
| Ключ
| Умолчание
| Extra
|
Хост
| char(60)
|
| PRI |
Db
| char(32)
|
| PRI |
Select_priv
| char(1)
|
|
| N |
Insert_priv
| char(1)
|
|
| N |
Update_priv
| char(1)
|
|
| N |
Delete_priv
| char(1)
|
|
| N |
Create_priv
| char(1)
|
|
| N |
Drop_priv
| char(1)
|
|
| N |
База данных: mysql Таблица: user
Поле
| Тип
| Null
| Key
| Умолчание
| Extra
|
Хост
| char(60)
|
| PRI |
Пользователь
| char(16)
|
| PRI |
Пароль
| char(8) |
Select_priv
| char(1)
|
|
| N |
Insert_priv
| char(1)
|
|
| N |
Update_priv
| char(1)
|
|
| N |
Delete_priv
| char(1)
|
|
| N |
Create_priv
| char(1)
|
|
| N |
Drop_priv
| char(1)
|
|
| N |
Reload_priv
| char(1)
|
|
| N |
Shutdown_priv
| char(1)
|
|
| N |
Process_priv
| char(1)
|
|
| N |
File_priv
| char(1)
|
|
| N |
Пример добавления новых пользователей:
$ mysql mysql
mysql> INSERT INTO user VALUES ('%','monty',password('something'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user (host,user,password) values('localhost','dummy','');
mysql> INSERT INTO user VALUES ('%','admin','','N','N','N','N','N','N','Y','N','Y','N');
mysql> quit
$ mysqladmin reload
Добавлено три новых пользователя (юзверя):
monty:
| Суперпользователь (администратор),
должен использовать пароль, для
работы с mysql.
|
dummy:
| Должен быть допущен к
индивидуальной базе данных по
таблице 'db '.
|
admin:
| Не нуждается в пароле, но
разрешено выполнение только команд 'mysqladmin
reload' and 'mysqladmin processlist'. Может
быть допущен к индивидуальной базе
данных через таблицу 'db'.
|
ВНИМАНИЕ! Вы ДОЛЖНЫ использовать
функцию password() при создании
пользователя, имеющего пароль. СУБД MySQL
ожидает получить зашифрованный пароль.
Атрибуты, установленные в таблице
пользователей перекрывают атрибуты,
установленные в таблице DB. Если сервер
поддерживает много баз данных, лучше
создавать пользователей без прав
доступа в таблице пользователей и
назначать им права доступа к базе данных
по таблице db.
Если Вы используете MIT threads package,
обратите внимание, что имя localhost не будет
работать, так как MIT threads package не
поддерживает socket-подключения. Это
означает, что Вы должны всегда
определять ваш hostname (имя сервера) при
подключении, даже если Вы работаете с
одним и тем же сервером.
Следует помнить следующие правила при
настройке прав доступа:
- Имя сервера и поля в таблице db могут
содержать регулярные выражения языка
SQL: символы % и _. В других полях
использовать их нельзя.
- Имя сервера может быть доменным
именем, именем localhost, IP адресом или SQL
выражением. Пустое поле "имя
сервера" означает любой сервер.
- Поле db является именем базы данных
или SQL выражением.
- Пустое имя пользователя
эквивалентно любому пользователю.
- Пустой пароль эквивалентен любому
паролю. Вы можете создать
суперпользователя (super-user) установив
все права для него в 'Y' в таблице
пользователей при создании этого
аккаунта. Этот пользователь сможет
делать что угодно, не считаясь со
значениями, установленными в таблице
DB!
- Таблица серверов проверяется только
когда в таблице db поле "имя сервера"
пустое.
- Все таблицы, по возможности,
сортируются в порядке host-user-db.
Пользователь |
Сортируется по именам
серверов и пользователей. |
db |
Сортируется по именам
серверов, пользователей и баз
данных. |
Сервер |
Сортируется по именам
серверов и баз данных. |
Начиная с версии 3.20.19 сервера введена
еще одна хитрость, для попытки вычислить,
как данный пользователь обратится к
данной базе данных. Допустим
существование пользователя с именем Джо,
который зарегистрирован так:
INSERT INTO user VALUES('%.external.domain.com','','','N','N','N',
'N','N','N','N','N','N','N');
Проверка таблицы баз данных будет
выполнена для пользователя '' (пустое имя),
а не для пользователя Джо, даже если
пользователь, Джо имеет запись в таблице
доступа к базам данных (db таблице).
Создание пользовательских аккаунтов -
вероятно, наиболее путающий аспект СУБД
MySQL, (особенно, если никогда не имел с ней
дела), так что не удивляйтесь, если
потребуется некоторое время, чтобы во
всем разобраться и получить парочку
несколько неприятных сюрпризов.
Использование программы mysqlaccess
делает управление доступом несколько
более ясным.
Вообще лучше избегать использования
регулярных выражений SQL в полях имени
сервера. Это упрощает отладку.
Конкретно, установите все поля "имя
сервера" в '%' и очистите таблицу
серверов. Как только все начнет
нормально функционировать, можно
начинать эксперименты с добавлением
имен серверов в таблицу серверов в
случае такой необходимости.
Если получено сообщение об ошибке 'Access
denied', то скорее всего вы нормально
связались с демоном mysqld, но имеете
неправильную информацию в вашей таблице
пользователей.
Зашифрованный пароль сохраняется в
таблице пользователей ('user ').
- При установлении соединения сервер
посылает случайное число клиенту.
- Клиент шифрует пароль, чтобы
получить то, что имеет сервер (он
хранит пароли в зашифрованном виде) и
вычисляет число из полученного с
сервера случайного числа и
зашифрованного пароля. Это число
отсылается на сервер.
- Сервер вычисляет число из
сохраненного в зашифрованном виде
пароля и сгенерированного случайного
числа. Если это число совпадет с тем,
которое прислал клиент, связь
устанавливается.
3 Изучение MySQL
Этот вопрос хорошо изложен в
трудах Alexey Pautov rldp@ftp.botik.ru.
Он написал толковое описание
команд MySQL и примерами работы.
Электронный вариант можно взять здесь:
MySQL
(rus)
Так же Вам может пригодиться
форум WWWBoard,
где все задают вопросы, а специалисты
помогут Вам найти ответ.
4 Изучение PHP
Сколько я не читал описаний PHP
на русском, все-же в конце понял, что
лучше оригинального описания на
английском языке не найти. По крайней
мере сначала читайте русские статьи, но
затем нужно скачать полное родное
описание, где есть ответы почти на все
вопросы. Вы как раз к тому времени будете
знать, что конретно Вам непонятно.
Итак, рекомендую этим
воспользоваться:
- Вступление
в PHP и MySQL.- коротко, но
всерьез рассказаны принципы работы с БД
MySQL, не забывая рассказать и что такое PHP,
где его можно употреблять, все
сопровождается примерами.
- PHP/FI
Version 2.0 - это уже более полная
техническая документация с
рассмотрением синтаксиса языка.
- HotMail
своими руками, или Что может PHP -
это уже практическая работа по освоению
языка.
-Оригинальное
техническое описание языка PHP -
это описание разработчиков (на
английском) - наиболее оплная информация
по всем функциям и методам.
А также советую посетить сайты,
посвященные PHP программированию:
5. Работа с БД MySQL на
примерах
1) Подключение
к серверу MySQL( mysql_connect )
$openConn2db = mysql_connect( "$hostname:$port", "$username",
"$password" );
2) Выбор
базы данных (database) (
mysql_select_db )
$dbSelected = mysql_select_db( $dbname, $openConn2db );
3) Создать
запрос(query) к базе данных
( mysql_query )
$queryResultID = mysql_query( $DBquery, $openConn2db );
4) определение
количества полей(number of
fields) в результате запроса( mysql_num_fields )
$numFields = mysql_num_fields( $queryResultID );
5) определение
количества строк
возвращаемых запросом(number of rows) ( mysql_num_rows
)
$numRows = mysql_num_rows( $queryResultID );
6) создание
массива со строками
результата( mysql_fetch_row )
$correspondingRowArray = mysql_fetch_row( $queryResultID );
[ Выясните размер, если вы желаете
использовать цикл для выборки
результатов запроса]
$correspondingRowArraySize = sizeof( $correspondingRowArray );
7) выборка
данных из первого
элемента массива
$content = current( $correspondingRowArray ); echo "This is the first
array element: $contentn";
8) выборка
данных из следующего
элемента массива [ done in 'for' loop ]
$content = next( $correspondingRowArray ); echo "This is the next
array element: $contentn";
9) закрытие
соединения с сервером
MySQL( mysql_close )
$closedConn2db = mysql_close( $connLinkID );
Для
примера и для дальнейшей работы с БД MySQL,
Вы можете посмотреть мой скрипт,
написанный для работы с этой БД - весит
всего 9Kb, а может соединяться с БД,
посылать SQL - запрос, редактировать,
сортировать, удалять, разбивать на
страницы. - Work
with MySQL.zip (3.6
Kb)
6. Работа с БД Oracle на
примерах
Описание функций для работы с
Oracle - находится в оригинальной
документации по PHP. Я не буду писать
перевод на русский, а лучше покажу как
ими пользоваться на примерах скриптов:
Oracle
scripts.zip (4,289 Kb)
Новые документы смотрите на
странице: http://www.nvkz.kuzbass.net/cyber-book
С уважением, SelestaSVZ
|