產生查詢結果
底下有幾種方法可以產生查詢結果:
result()
這函數會回傳一個陣列物件(objects),或者失敗時會是空陣列。 一般狀況可以使用 foreach 迴圈,就像底下:
$query = $this->db->query("YOUR QUERY");
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
上述 函數 的別名是 result_object()。
假如您的查詢可能不會產生結果,我們建議您先用下面方式進行判斷:
$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
}
You can also pass a string to result() which represents a class to instantiate for each result object (note: this class must be loaded)
$query = $this->db->query("SELECT * FROM users;");
foreach ($query->result('User') as $row)
{
echo $row->name; // call attributes
echo $row->reverse_name(); // or methods defined on the 'User' class
}
result_array()
此函數會回傳查詢的陣列資料,或者當查無資料會回傳空陣列。一般狀況可以使用 foreach 迴圈,就像底下:
$query = $this->db->query("YOUR QUERY");
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
row()
此函數會回傳單筆陣列資料。假如您查詢的資料超過一筆,它只會回傳第一筆資料。 結果會回傳單一 物件(object)。參考範例:
$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
$row = $query->row();
echo $row->title;
echo $row->name;
echo $row->body;
}
如果您想要回傳特定的第幾筆資料,可以設定第一個參數為您想要的該筆資料:
$row = $query->row(5);
You can also add a second String parameter, which is the name of a class to instantiate the row with:
$query = $this->db->query("SELECT * FROM users LIMIT 1;");
$query->row(0, 'User')
echo $row->name; // call attributes
echo $row->reverse_name(); // or methods defined on the 'User' class
row_array()
同等於上述 row() 函數,不同的是它回傳是陣列. 參考範例:
$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
$row = $query->row_array();
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
如果您想要回傳特定的第幾筆資料,可以設定第一個參數為您想要的該筆資料:
$row = $query->row_array(5);
除此之外,您可以進而利用底下方式查詢到第一筆/最後一筆/下一筆/或者是前一筆資料:
$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()
預設回傳值為物件,除非設定第一個參數為陣列資料:
$row = $query->first_row('array')
$row = $query->last_row('array')
$row = $query->next_row('array')
$row = $query->previous_row('array')
回傳結果補助函數
$query->num_rows()
回傳查詢資料行數. 注意: 在這例子裡面,$query 是您查詢語法之後所回傳物件的變數:
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();
$query->num_fields()
回傳查詢結果所產生的欄位行數。務必確定使用查詢所回傳物件的變數:
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_fields();
$query->free_result()
釋放查詢結果所產生的記憶體,以及刪除物件變數ID。基本上PHP會在程式全部執行完成後自動釋放記憶體。 然而,假如您在單一PHP檔案執行了多個查詢,就必須要釋放每一次查詢所消耗的記憶體空間。參考範例:
$query = $this->db->query('SELECT title FROM my_table');
foreach ($query->result() as $row)
{
echo $row->title;
}
$query->free_result(); // $query 物件將不再使用了
$query2 = $this->db->query('SELECT name FROM some_table');
$row = $query2->row();
echo $row->name;
$query2->free_result(); // $query2 物件將不再使用了