- •Введение.
- •Лекция1.Введениевклиент-серверныеСубд.
- •InterbaseSqlServer.Общиесведения.
- •Платформы
- •Типыприложений
- •ФайлыбазыданныхInterBase
- •Лекция3.Триггерыихранимыепроцедуры
- •Хранимыепроцедуры(StoredProcedures)
- •Терминаторы
- •Заголовок
- •Телопроцедуры
- •Блоккодапроцедуры
- •Операторприсваивания
- •УсловныйоператорIf…then…else
- •ОператорSelect
- •ЦиклForselecTиSuspend
- •ЦиклWhile…do
- •ОператорыInsert,update,delete
- •ОператорExecuteprocedure
- •Исключения
- •СобытияиоператорPost_event
- •Измененияиудаленияхранимыхпроцедур
- •Примерысозданияивызовахранимыхпроцедур
- •Генераторы
- •Увеличениешагагенератора
- •Триггеры
- •ПеременныеNeWиOld
- •Реализацияавтоинкрементныхключевыхполей
- •Лекция4.Транзакции.Механизмтранзакций
- •Атомарность(Atomicity)
- •Согласованность(Consistency)
- •Изолированность(Isolation)
- •Устойчивость(Durability)
- •Неявныйиявныйстарттранзакций
- •Кактранзакцияработает
- •Уровниизолированноститранзакций
- •Параметрытранзакций
- •Компонентыдоступакданнымивизуальныекомпоненты МеханизмыдоступакБд
- •ПроблемырусскихбукввInterBase
- •Лекция5. Основы языка php. Функции php для работы с субд ИсторияPhp
- •ВозможностиPhp
- •Основнойсинтаксис
- •Разделениеинструкций
- •Комментарии
- •Переменные,константыиоператоры
- •Переменные
- •Константы
- •Операторы
- •Типыданных
- •Типboolean(булевилилогическийтип)
- •Типinteger(целые)
- •Типfloat(числасплавающейточкой)
- •Типstring(строки)
- •Одинарныекавычки
- •Двойныекавычки
- •Типarray(массив)
- •Определениеприпомощиarray()
- •Определениеспомощьюсинтаксисаквадратныхскобок
- •Типobject(объекты)
- •Типresource(ресурсы)
- •Решениезадачи
- •Построениеинтерфейсадлядобавленияинформации
- •Установкасоединения
- •Выборбазыданных
- •Получениеспискаполейтаблицы
- •Отображениеспискаполейвhtml-форму
- •Записьданныхвбазуданных
- •Отображениеданных,хранящихсявMySql
- •Заключение
Построениеинтерфейсадлядобавленияинформации
Итак,унасестькакая-тотаблицавбазеданных.Чтобыпостроитьинтерфейсдлядобавленияинформациивэтутаблицу,нужноееструктуру(т.е.наборееполей)отобразитьвhtml-форму.
Разобьемэтузадачунаследующиеподзадачи:
установкасоединениясБД;
выборрабочейБД;
получениеспискаполейтаблицы;
отображениеполейвhtml-форму.
Послеэтогоданные,введенныевформу,нужнозаписатьвбазуданных.Рассмотримвсеэтизадачипопорядку.
Установкасоединения
Итак,первое,чтонужносделать,-этоустановитьсоединениесбазойданных.Воспользуемсяфункциейmysql_connect.
Синтаксисmysql_connect
ресурсmysql_connect([строкаserver
[,строкаusername[,строкаpassword
[,логическоеnew_link
[,целоеclient_flags]]]]])
ДаннаяфункцияустанавливаетсоединениессерверомMySQLивозвращаетуказательнаэтосоединениеилиFALSEвслучаенеудачи.Дляотсутствующихпараметровустанавливаютсяследующиезначенияпоумолчанию:
server='localhost:3306'
username=имяпользователявладельца
процессасервера
password=пустойпароль
Еслифункциявызываетсядваждысоднимиитемижепараметрами,тоновоесоединениенеустанавливается,авозвращаетсяссылканастароесоединение.Чтобыэтогоизбежать,используютпараметрnew_link,которыйзаставляетвлюбомслучаеоткрытьещеодносоединение.
Параметрclient_flags-этокомбинацияследующихконстант:MYSQL_CLIENT_COMPRESS(использоватьпротоколсжатия),MYSQL_CLIENT_IGNORE_SPACE(позволяетвставлятьпробелыпослеименфункций),MYSQL_CLIENT_INTERACTIVE(ждатьinteractive_timeoutсекунд-вместоwait_timeout-дозакрытиясоединения).
Параметрnew_linkпоявилсявPHP4.2.0,апараметрclient_flags-вPHP4.3.0.
Соединениессерверомзакрываетсяпризавершенииисполненияскрипта,еслионодоэтогонебылозакрытоспомощьюфункцииmysql_close().
Итак,устанавливаемсоединениесбазойданныхналокальномсервередляпользователяninaспаролем"123":
<?
$conn=mysql_connect(
"localhost","nina","123")
ordie("Невозможноустановить
соединение:".mysql_error());
echo"Соединениеустановлено";
mysql_close($conn);
?>
Действиеmysql_connectравносильнокоманде
shell>mysql-unina-p123
Выборбазыданных
Послеустановкисоединениянужновыбратьбазуданных,скоторойбудемработать.Нашиданныехранятсявбазеданныхbook.ВMySQLвыборбазыданныхосуществляетсяспомощьюкомандыuse:
mysql>usebook;
ВPHPдляэтогосуществуетфункцияmysql_select_db.
Синтаксисmysql_select_db:
логическоеmysql_select_db(
строкаdatabase_name
[,ресурсlink_identifier])
ЭтафункциявозвращаетTRUEвслучаеуспешноговыборабазыданныхиFALSE-впротивномслучае.
Сделаембазуданныхbookрабочей:
<?
$conn=mysql_connect(
"localhost","nina","123")
ordie("Невозможноустановить
соединение:".mysql_error());
echo"Соединениеустановлено";
mysql_select_db("book");
?>
Получениеспискаполейтаблицы
Теперьможнозанятьсясобственнорешениемзадачи.Какполучитьсписокполейтаблицы?Оченьпросто.ВPHPинаэтотслучайестьсвоякоманда-mysql_list_fields.
Синтаксисmysql_list_fields
ресурсmysql_list_fields(
строкаdatabase_name,
строкаtable_name
[,ресурсlink_identifier])
Этафункциявозвращаетсписокполейвтаблицеtable_nameвбазеданныхdatabase_name.Получается,чтовыбиратьбазуданныхнамбылонеобязательно,ноэтопригодитсяпозже.Какможнозаметить,результатработыэтойфункции-переменнаятипаресурс.Тоестьэтонесовсемто,чтомыхотелиполучить.Этоссылка,которуюможноиспользоватьдляполученияинформацииополяхтаблицы,включаяихназвания,типыифлаги.
Функцияmysql_field_nameвозвращаетимяполя,полученноговрезультатевыполнениязапроса.Функцияmysql_field_lenвозвращаетдлинуполя.Функцияmysql_field_typeвозвращаеттипполя,афункцияmysql_field_flagsвозвращаетсписокфлаговполя,записанныхчерезпробел.Типыполямогутбытьint,real,string,blobит.д.Флагимогутбытьnot_null,primary_key,unique_key,blob,auto_incrementит.д.
Синтаксисувсехэтихкомандодинаков:
строкаmysql_field_name(
ресурсresult,целоеfield_offset)
строкаmysql_field_type(
ресурсresult,целоеfield_offset)
строкаmysql_field_flags(
ресурсresult,целоеfield_offset)
строкаmysql_field_len(
ресурсresult,целоеfield_offset)
Здесьresult-этоидентификаторрезультатазапроса(например,запроса,отправленногофункциямиmysql_list_fieldsилиmysql_query(онейбудетрассказанопозднее)),аfield_offset-порядковыйномерполяврезультате.
Вообщеговоря,то,чтовозвращаютфункциитипаmysql_list_fieldsилиmysql_query,представляетсобойтаблицу,аточнее,указательнанее.Чтобыполучитьизэтойтаблицыконкретныезначения,нужнозадействоватьспециальныефункции,которыепострочночитаютэтутаблицу.Ктакимфункциямиотносятсяmysql_field_nameит.п.Чтобыперебратьвсестрокивтаблицерезультатавыполнениязапроса,нужнознатьчислостроквэтойтаблице.Командаmysql_num_rows(ресурсresult)возвращаетчислостроквомножестверезультатовresult.
АтеперьпопробуемполучитьсписокполейтаблицыArtifacts(коллекцияэкспонатов).
<?
$conn=mysql_connect(
"localhost","nina","123")
ordie("Невозможноустановить
соединение:".mysql_error());
echo"Соединениеустановлено";
mysql_select_db("book");
$list_f=mysql_list_fields(
"book","Artifacts",$conn);
$n=mysql_num_fields($list_f);
for($i=0;$i<$n;$i++){
$type=mysql_field_type($list_f,$i);
$name_f=mysql_field_name($list_f,$i);
$len=mysql_field_len($list_f,$i);
$flags_str=mysql_field_flags(
$list_f,$i);
echo"<br>Имяполя:".$name_f;
echo"<br>Типполя:".$type;
echo"<br>Длинаполя:".$len;
echo"<br>Строкафлаговполя:".
$flags_str."<hr>";
}
?>
Врезультатедолжнополучитьсяпримерновотчто(есливтаблицевсегодваполя,конечно):
Имяполя:id
Типполя:int
Длинаполя:11
Строкафлаговполя:
not_nullprimary_keyauto_increment
_________________________________________________
Имяполя:title
Типполя:string
Длинаполя:255
Строкафлаговполя: