請閱讀一些關於MVC模式,問題是明確指出如何寫一個模型。
考慮使用此功能
public function getTable($table, $where = array(), $select = '*', $order_by = '', $limit = '', $offset = '') {
if ($order_by !== '' && $order_by != 'RANDOM') $this->db->order_by($order_by);
if ($order_by == 'RANDOM') $this->db->order_by('id', 'RANDOM');
if ($limit !== '') $this->db->limit($limit, $offset);
$this->db->select($select);
$q = $this->db->get_where($table, $where);
return ($q->num_rows() > 0) ? $q->result() : FALSE;
}
你的目的調用該函數是這樣的:
getTable($talbe, array('what' => $link));
//returns FALSE if no data are selected,
//or returns object with data,
,如果你想返回的數組,而不是與$q->array_result()
更換$q->result()
請注意,活動記錄自動逃脫。
後評論:
評論-1,可以簡化功能很容易只刪除你不需要的東西,例如
public function getTable2($table, $where = array(), $limit = '', $offset = '') {
if ($limit !== '') $this->db->limit($limit, $offset);
$q = $this->db->get_where($table, $where);
return ($q->num_rows() > 0) ? $q->result() : FALSE;
}
評論-2,當沒有數據使用此if-else
聲明
if (!$my_data = getTable2('table', array('where' => $link))) {
//there is some DATA to work with
echo "<pre>";
var_dump($my_data);
echo "</pre>";
} else {
//no DATA do redirect or tell user that there is no DATA
redirect(); //redirect to default_controller
}
comment-3,no comment;
comment-4,它還允許更安全的查詢,因爲系統會自動轉義這些值。從此source。另一個關於活躍記錄的SO question提供您正在尋找的確切答案。
請具體說明什麼不是「好」。 – ethan
返回空數組 – Schneider