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 это единственный метод
// добиться цели.