Крок 10. Заглянемо в базу. перший скрипт
Два зауваження на початку:
- У попередньому кроці я допустив прикру помилку. Для установки MySQL як служби під Windows NT крім створення my.ini файлу winmysqladmin-му треба, звичайно ж, виконати саму установку сервера як служби ось так:
Отже, база (і перша таблиця в ній) створені.
Напишемо скрипт, який буде формувати html-сторінку з вмістом таблиці. Але спочатку таблицю треба заповнити вмістом. Так як форма введення у нас ще не створена, то скористаємося методом з попереднього кроку - створимо sql-запит на додавання запису в таблицю і направимо його (файл із запитом) на вхід mysql.exe.
Ось цей скрипт:
Кілька зауважень по цьому запиту. По-перше, я не сказав "commit". В даному випадку це не обов'язково, тому що commit відбудеться по закінченню скрипта автоматично. По-друге, в якості значення для ключового поля id вибрано значення null, що змушує mysql привласнити (в силу параметра для поля auto_increment) числове значення, на одиницю більше, ніж максимальне з існуючих значень для цього поля в таблиці. По-третє, деякі поля ми "занулити" - потім заповнимо. І по-четверте, цей запит до sql-сервера відрізняється від стандарту! Справа в тому, що (як я вже говорив) mysql має деякі відмінності від sql-стандарту. Зокрема, insert допускає таку скорочену форму запису. За правилами я б мав би замість одного insert-а з перерахованими через кому групами значень в values використовувати два запити. Але ми полегшили собі життя. Взагалі-то це, на мій погляд, не найкраща практика - використовувати всякі "відхилення від норми". Принаймні страждає переносимість. Але нас зараз ця тема навряд чи повинна хвилювати.
Для PHP4 (його ini-файл кличуть php.ini) нічого робити не треба, тому що підтримка mysql в 4-й версії вбудована.
І ще зауваження: PHP3 і PHP4 можна використовувати на одному комп'ютері разом. У мене в apache файли з розширенням php3 обробляє 3-тя версія, а php4 і phtml - 4-я.
Ось фрагмент з httpd.conf:
Options ExecCGI
ScriptAlias "/ __ php4_dir __ /" "C: / usr / local / php4 /"
Action application / x-httpd-php4 "/__php4_dir__/php.exe"
Options ExecCGI
ScriptAlias "/ __ php3_dir __ /" "C: / usr / local / php3 /"
Action application / x-httpd-php3 "/__php3_dir__/php.exe"
А ось фрагмент файлу mime.types:
application / x-httpd-php3 phtml php3
application / x-httpd-php4 php4
А тепер обіцяний скрипт:
По-перше, навіть у такій спрощеній формі код роботи з mysql надмірний. Оскільки ми працює з однією базою, та ще й робимо єдиний запит, то замість mysql_connect (), mysql_select_db () і mysql_query () досить було викликати mysql_db_query (). Ця функція при необхідності виконає коннекціі (в іншому, в цьому вона не самотня), вибере базу даних і виконає запит до бази.
По-друге, mysql_close () теж необов'язкова, тому що з'єднання з сервером буде автоматично закрито при закінченні скрипта.
По-третє, і вже звичайно ж в даному випадку під mysql_free_result () ніякої необхідності. Звільняти пам'ять при єдиному запиті та ще такого незначного обсягу. Тут ця функція викликана швидше для демонстрації можливих операцій з mysql на php, ну або, якщо хочете, для порядку. ;)
По-четверте, функції implode () і explode () відносяться до стрінговим. Цій темі буде присвячено окремий крок (кроки). А поки: explode () створює масив з фрагментів рядка, розбираючи її як рядок з роздільником, зазначеному в першому параметрі. Implode () робить зворотну операцію. Цю пару я застосував для зручності - по-моєму це простіше, ніж набирати рядок у вигляді ". Текст
І по-п'яте, це чудо програмістської думки;) виконується як під 4-й версією php4, так і під 3-ої.
Далі в програмі: докладний опис функцій роботи з mysql, форма для введення записів, читання (імпорт) даних з файлу і запис (експорт) в файл, index.php3.