|
Программирование >> Создание клиентов mysql
Объектно-реляционные связи 531 CREATE TABLE Building ( ID INT NOT NULL AUTO INCREMESIT, Name CHAR(32) NOT NULL, PRIMARY KEY(ID) CREATE TABLE Room ( ID INT NOT NULL AUTO INCREMENT, Building INT NOT NULL, Name CHAR(32) NOT NULL, PRIMARY KEY(ID), FOREIGN KEY (Building) REFERENCES Building (ID) В листинге 30.4 демонстрируется реализация классов Building и Room на PHP с использованием методов, обеспечивающих постоянство объектов. Чтобы пример стал немного короче, я не включил в него код проверки ошибок, возникающих при подключении к базе данных. Естественно, в реальном приложении такой код необходим. <?php class Building { var $name; var $room; var $id; var $dbLink,- function Building($dbLink, $id=0) { $this->dbLink = $dbLink; $tMs->id = $id; $this->room = array(); если задан идентификатор, загружаем объект if($this->id) $this->sqlGet О; function { if($this->id <= 0) { return(FALSE); извлечение даннтх из таблицы Building $ Que г у = SELECT Name . FROM Building . WHERE ID = $this->id ; $dbResult = mysql query($Query, $this->dbLink); $row = mysql fetch row($dbResult); $this->name = $rowl01; создание массива комнат $this->room = array(); $Query = SELECT ID . FROM Room . WHERE Building = $this->id ; $dbResult = mysql query($Query, $this->dbLink); while($row = mysql fetch row($dbResult)) $this->room[] = new Room($this->dbLink, $row[0]) function sqlPutO { global $dbLink; if($this->id <= 0) создание новой записи в таблице Building $Query = INSERT INTO Building (Name) . VALUES ( . $tMs->name . ) ; $dbResult = mysql query($Query, $this->dbLink); $tMs->id = mysql insert id () ; занесение в базу данных массива комнат for($r=0; $г < count($this->room); $r++) { $this->room[$r]->building = $this->id; $this->room[$ri->sqlPut{); else обновление существующей записи $Query = UPDATE Building . SET Name = . $this->name . , WHERE ID = $this->id ; $dbResult = mysql query($Query, $this->dbLink); обновление массива комнат for($r=0; $r < count($this->room); $r++) { $this->room[$r]->sqlPut(); function sqlDeleteO { удаление всех объектов комнат Объектно-реляционные связи 533 for($r=0; $ his->room) ; $r++) $this->roorti[$r]->sqlDelete() ; удаление объекта здания $Query = DELETE EROM Building . WHERE ID = $this->id ; $dbResult = mysql query($Query, $this->dbLink); $tMs->id = 0; class Room var $building; var $name; , var $id; var $dbLink; function Room($dbLink, $id=0) { $this->dbLink = $dbLink; $tMs->id = $id; если задан идентификатор, загружаем объект if($id) $this->sqlGet() ; function sqlGetO { return(FALSE); извлечение данных из таблицы Room $Query = SELECT Building, Name . EROM Room . WHERE ID = $this->id ; $dbResult = mysql query($Query, $this->dbLink) ; $row = mysql fetch row ($dbResult) ; $this->building = $row[0]; $this->name = $row[l]; function sqlPutO { if($this->building <= 0) { return(FALSE); if 0)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |