2011-09-22 108 views
0

我是相對有經驗的PHP開發人員。CodeIgniter - mysql while循環

我選擇了CodeIgniter框架。到目前爲止,我已經理解它是如何使用的。到現在爲止,我希望能夠做一個while循環。

在我的控制,我有:

$this->load->model('Test'); 
$data['result'] = $this->Test->getInfo(); 
$this->load->view('index1', $data); 

在我的模型,我有:

$result = mysql_query("SELECT * FROM users WHERE last_name='Hart'")or die(mysql_error()); 
$row = mysql_fetch_array($result);  
return $row; 

在我看來:

echo $result[0]; 

然而,這僅僅輸出第一場在找到的第一行內。

請你幫我檢索數據庫中的信息 - while循環。

while循環是否發生在模型中?我只是正確地迴應結果?

回答

9

實際上,使用CodeIgniter包含的ActiveRecord類來執行您想要執行的操作要簡單得多,它將允許您返回結果數組。這裏是documentation

你的模式將成爲:

$this->db->where('last_name','Hart'); 
$result = $this->db->get('users'); 
return $result->result_array(); 

您可能還需要設置你的數據庫application/config/database.php,並且還裝載數據庫類application/config/autoload.php

$autoload['libraries'] = array('database'); 

要顯示此信息,使用正確的MVC模式你的控制器應該將它從模型獲得的信息傳遞給視圖。一般這樣做,你這樣做:

$data['myinfo'] = $this->test->getInfo(); 
$this->load->view('test_view',$data); 

然後,你必須創建applications/views/test_view.php像這樣一個觀點:

<h1>Some HTML goes here</h1> 
<?php 
foreach($myinfo as $row) { 
    echo $row['field']; 
} 
?> 
<p>Some more HTML goes here</p> 

我建議你潛水前閱讀CodeIgniter User Guide爲創建一個應用程序如笨包括庫這大大簡化並加速了整個過程。

+0

好的太棒了!我在哪裏聲明數據庫連接細節?那麼,我是否也一樣迴應它? – ryryan

+1

我剛剛在帖子中投放了這些信息,而我即將再次編輯它以添加正確顯示該信息的信息。 – Ben

+0

@ hart1994 - 閱讀db鏈接細節的文檔! – Bruce

0

好mysql_fetch_array只能帶回一排的時間,所以你需要把while循環圍繞mysql_fetch_array呼叫

喜歡的東西

while($row = mysql_fetch_array($result)) { //save/process data }

我不過只是使用codeigniters庫加載數據庫,然後使用它:

$this->load->database();
$result = $this->db->query("SELECT * FROM users WHERE last_name='Hart'");
$result = $result->result_array();
//check for data and handle errors
return $result[0]