我是一个比较有经验的PHP开发人员。
我选择了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;
And in my View:
echo $result[0];
但是,这只输出找到的第一行中的第一个字段。
请你帮我从数据库中检索信息- while循环。
while循环是否发生在模型中?我只是正确地返回了结果吗?
实际上有一种更简单的方法来做你想做的事情,使用CodeIgniter包含的ActiveRecord类,它将允许你只返回一个结果数组。这是文档
你的模型将变成:
$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用户指南,因为CodeIgniter包含大大简化和加快整个过程的库。
mysql_fetch_array每次只能返回一行,因此您需要在mysql_fetch_array调用
周围放置while循环之类的 while($row = mysql_fetch_array($result)) {
//save/process data
}
然而,我会使用codeigniter库来加载db,然后使用它:
$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]