САМОУЧИТЕЛЬ PHP 4



         

Полноценный класс таблицы MySQL - часть 5


function TableSelectQuery($Expr="",$Order="id desc")

{ $this->Error="";

 if(!$Expr) $Expr="1=1";

 $r=mysql_query("select * from ".$this->TableName.

 " where ($Expr) and (id>1) order by $Order");

 if(!$r) { $this->Error=mysql_error(); return; }

 return $r;

}

function SelectQuery($Expr="",$Order="id desc")

{ return $this->TableSelectQuery($Expr,$Order); }

// Возвращает результат предыдущего запроса select (точнее, очередную

// найденную запись) в виде распакованного (!) массива. Если

// SelectQuery() нашла несколько записей, то, последовательно вызывая

// GetResult(), можно считать их все. Метод делает всю "черную" работу

// по сериализации. Еще раз: если у результата несколько строк, то метод

// возвращает очередную. Если строки кончились, возвращает "".

// Чаще всего в вызове этой функции (и функции SelectQuery) нет

// необходимости — можно воспользоваться методом Select(), который по

// запросу сразу возвращает массив со всеми обработанными результатами!

function TableGetResult($r)

{ $this->Error="";

 // Выбираем очередную строку в виде массива

 if($r) $Result=mysql_fetch_array($r);

 else $this->Error=mysql_error();

 if(!@is_array($Result)) return;

 // Перебираем все поля таблицы и записываем их в массив $Hash

 $Hash=array();

 foreach($this->Fields as $k=>$i)

 if(isSet($Result[$k])) $Hash[$k]=$Result[$k];

 // Распаковываем поле с данными

 $Hash+=SqlUnpack($Hash[DataField]); unSet($Hash[DataField]);

 $this->PostSelect($Hash);

 // Все сделано

 return $Hash;

}

function GetResult($r) { return $this->TableGetResult($r); }

// Примечание: мы используем две функции, из которых GetResult()

// просто является синонимом для TableGetResult(), чтобы позволить

// производному классу вызывать функции MysqlTable, даже если они

// переопределены в нем. К сожалению, в PHP это единственный метод

// добиться цели.




Содержание  Назад  Вперед