2013-07-06 58 views
1

我有以下控制器

controller

function bret($id){ 
$this->load->model('school_model'); 
$data = $this->school_model->get_city_and_population($id); 
foreach ($data as $row) 
{ 
echo "<b>Name Of The City</b>...........". $row['Name']; 
echo "<br/>"; 
echo "<b>Total Population</b>...........".$row['Population']; 
//echo "<a href='".$data->next_row()."'>next</a>"; 
} 
} 

model

function get_city_and_population($id){ 
$this->db->select('Name,Population'); 
$query = $this->db->get_where('city', array('ID'=>$id)); 
return $query->result_array(); 
} 

在我的數據庫,我使用的是ids不連續,因爲我已經刪除了一些記錄。我將如何使用$row = $query->next_row()去下一行?

+0

我不認爲你可以在這種情況下使用'$ query-> next_row()',因爲這些函數是用於遍歷結果數組的。我認爲你提出了正確的方法,你只需要使用活動記錄類來構造你的查詢 –

回答

2

這可能是最糟糕的 ™解決方案的工作。它有點晚了,我需要這個工作不惜一切代價。我即將睡覺,所以有點高興。

Model

function get_next($id){ 
$db = new PDO('mysql:host=localhost;dbname=world', 'root', ''); 
$stmt = $db->query("SELECT * FROM city WHERE id > $id ORDER BY id LIMIT 1;"); 
$id = $stmt->fetchColumn(0); 
if ($id !== false) { 
    return $id; 
} 
} 
function get_previous($id){ 
$db = new PDO('mysql:host=localhost;dbname=world', 'root', ''); 
$stmt = $db->query("SELECT * FROM city WHERE id < $id ORDER BY id DESC LIMIT 1;"); 
$id = $stmt->fetchColumn(0); 
if ($id !== false) { 
    return $id; 
} 
} 

Controller

function bret($id){ 
$this->load->model('school_model'); 
$data = $this->school_model->get_city_and_population($id); 
$next = $this->school_model->get_next($id); 
$previous = $this->school_model->get_previous($id); 
foreach ($data as $row) 
{ 
echo "<b>Name Of The City</b>...........". $row['Name']; 
echo "<br/>"; 
echo "<b>Total Population</b>...........".$row['Population']; 
echo "<br/>"; 
echo "<a href='".$next."'>next</a>"; 
echo "<br/>"; 
echo "<a href='".$previous."'>previous</a>"; 
} 
} 

我試圖找出一種方式,笨數據庫類,而不是PDO做到這一點。