Может кто-нибудь объяснить следующий код PHP? - PullRequest
0 голосов
/ 13 июля 2009

Может кто-нибудь объяснить, что делает следующий код PHP


function query($query_string) 
    {
        if ($query_string == "") {
            return 0;
        }

        if (!$this->connect()) {
            return 0; 
        };

        if ($this->QueryID) {
            $this->free_result();
        }

        if ($this->RecordsPerPage && $this->PageNumber) {
            $query_string .= " LIMIT " . (($this->PageNumber - 1) * $this->RecordsPerPage) . ", " . $this->RecordsPerPage;
            $this->RecordsPerPage = 0;
            $this->PageNumber = 0;
        } else if ($this->RecordsPerPage) {
            $query_string .= " LIMIT " . $this->Offset . ", " . $this->RecordsPerPage;
            $this->Offset = 0;
            $this->RecordsPerPage = 0;
        }

        $this->QueryID = @mysql_query($query_string, $this->LinkID);
        $this->Row   = 0;
        $this->Errno = mysql_errno();
        $this->Error = mysql_error();
        if (!$this->QueryID) {
            $this->halt("Invalid SQL: " . $query_string);
        }

        return $this->QueryID;
    }

function next_record() 
    {
        if (!$this->QueryID) {
            $this->halt("next_record called with no query pending.");
            return 0;
        }

        $this->Record = @mysql_fetch_array($this->QueryID);
        $this->Row   += 1;
        $this->Errno  = mysql_errno();
        $this->Error  = mysql_error();

        $stat = is_array($this->Record);
        if (!$stat && $this->AutoFree) {
            $this->free_result();
        }
        return $stat;
    }

Можно ли сделать вышеперечисленное проще, будет ли разумно использовать ORM?

Ответы [ 2 ]

5 голосов
/ 13 июля 2009

Первый метод класса выглядит так, как будто он выполняет запрос MySQL и добавляет предложение LIMIT для разбиения на страницы. Второй перемещает текущий запрос на следующую запись, увеличивая счетчики нумерации страниц.

Более подробно, вот первый пример:

  • Выйдите из метода, если запрос пуст или соединение с базой данных не существует.
  • Освободите любой существующий запрос.
  • Если задано количество записей на страницу и номер страницы:
    • Добавьте их в предложение LIMIT запроса.
    • И сбросьте их на 0.
  • В противном случае, если задано количество записей на странице:
    • Добавьте его в предложение LIMIT запроса.
    • И сбросьте их на 0.
  • Запустите запрос.
  • Установить текущую строку на 0.
  • Собирать ошибки.
  • Если запрос не удался, остановитесь с ошибкой.
  • Вернуть запрос.

И второе:

  • Если запрос не установлен, остановите с ошибкой.
  • Получить информацию о строке в виде массива для текущей строки.
  • Увеличить номер строки.
  • Поймай все ошибки.
  • Если результат не массив освободить / закрыть запрос.
  • В противном случае вернуть набор результатов.
0 голосов
/ 13 июля 2009

Да, вы правы. Росс это что-то вроде функции нумерации страниц в классе, который вызывает записи одну за другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...