Podręcznik użytkownika CodeIgniter wersja 2.2.1


Generowanie wyników zapytań

Jest kilka sposobów na generowanie wyników zapytań:

result()

Ta funkcjia zwraca wynik zapytania jako tablicę obiektów lub pustą tablicę przy niepowodzeniu. Zazwyczaj będziesz używał tej funkcji w pętli foreach, w ten sposób:

$query = $this->db->query("TWOJE ZAPYTANIE");

foreach ($query->result() as $row)
{
   echo $row->title;
   echo $row->name;
   echo $row->body;
}

Powyższa funkcja jest aliasem funkcji result_object().

Jeśli wykonujesz zapytanie, które może nie zwrócić żadnego wyniku, możesz sprawdzić, czy taki wynik istnieje:

$query = $this->db->query("TWOJE ZAPYTANIE");

if ($query->num_rows() > 0)
{
   foreach ($query->result() as $row)
   {
      echo $row->title;
      echo $row->name;
      echo $row->body;
   }
}

Możesz również przypisać ciąg znaków do funkcji result(), który będzie reprezentował instancję klasy dla każdego obiektu wyniku (uwaga: klasa ta musi być załadowana)

$query = $this->db->query("SELECT * FROM users;");

foreach ($query->result('User') as $row)
{
   echo $row->name; // wywołanie atrybutu
   echo $row->reverse_name(); // lub metody zdefiniowanej w klasie 'User'
}

result_array()

Ta funkcja zwraca wynik jako tablicę lub pustą tablicę, jeśli zapytanie nie będzie miało wyników. Zazwyczaj będziesz używał tej funkcji w pętli foreach, w ten sposób:

$query = $this->db->query("TWOJE ZAPYTANIE");

foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}

row()

Ta funkcja zwraca pojedynczy rezultat. Jeśli Twoje zapytanie ma więcej niż jeden wynik, zwrócony zostanie jedynie pierwszy wynik. Wynik jest zwracany jako obiekt. Oto przykład:

$query = $this->db->query("TWOJE ZAPYTANIE");

if ($query->num_rows() > 0)
{
   $row = $query->row();

   echo $row->title;
   echo $row->name;
   echo $row->body;
}

Jeśli chcesz określić, który wynik ma zostać zwrócony, możesz przypisać numer wiersza jako pierwszy parametr metody:

$row = $query->row(5);

Możesz również dodać drugi parametr jako ciąg znaków, który będzie nazwą klasy, której instancją ma być dany wiersz:

$query = $this->db->query("SELECT * FROM users LIMIT 1;");

$query->row(0, 'User')
echo $row->name; // wywołanie atrybutu
echo $row->reverse_name(); // lub metody zdefiniowanej w klasie 'User'

row_array()

Tak samo jak powyżej, działa funkcja row() - wyjątkiem jest jedynie to, że zwraca tablicę. Przykład:

$query = $this->db->query("TWOJE ZAPYTANIE");

if ($query->num_rows() > 0)
{
   $row = $query->row_array();

   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}

Jeśli chcesz aby został zwrócony konkretny wynik, możesz przypisać numer tego wyniku do pierwszego parametru:

$row = $query->row_array(5);

Ponadto, możesz poruszać się po wynikach do przodu/do tyłu/do pierwszego wyniku/do ostatniego wyniku, używając tych funkcji:

$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()

Domyślnie, powyższe funkcje zwracają obiekt, chyba że użyjemy słowa "array" jako parametr:

$row = $query->first_row('array')
$row = $query->last_row('array')
$row = $query->next_row('array')
$row = $query->previous_row('array')

Funkcje pomocnicze wyników

$query->num_rows()

Zwraca liczbę wyników dla zapytania. Uwaga: W tym przykładzie $query jest zmienną, do której przypisany jest wynik zapytania:

$query = $this->db->query('SELECT * FROM mojatabela');

echo $query->num_rows();

$query->num_fields()

Liczba KOLUMN (pól) zwróconych przez zapytanie. Upewnij się, że wywołujesz tę funkcję używając wyniku zapytania:

$query = $this->db->query('SELECT * FROM mojatabela');

echo $query->num_fields();

$query->free_result()

Zwalnia pamięć powiązaną z wynikiem i usuwa ID zasobu. PHP normalnie uwalnia pamięć automatycznie na końcu wykonywania skryptu. Jeśli jednak uruchamiasz wiele zapytań w jednym skrypcie, możesz chcieć uwolnić pamięć po każdym wyniku zapytania, które zostało wysłane - co przełoży się na zmiejszenie zużycia pamięci. Przykład:

$query = $this->db->query('SELECT title FROM mojatabela');

foreach ($query->result() as $row)
{
   echo $row->title;
}
$query->free_result(); // Wyniki obiektu $query nie będą już dostępne

$query2 = $this->db->query('SELECT name FROM jakastabela');

$row = $query2->row();
echo $row->name;
$query2->free_result(); // Wyniki obiektu $query2 nie będą już dostępne