Codeigniter:foreach 方法或结果数组?? [模型+视图]
Posted
技术标签:
【中文标题】Codeigniter:foreach 方法或结果数组?? [模型+视图]【英文标题】:Codeigniter: foreach method or result array?? [Models +View] 【发布时间】:2012-08-19 22:46:57 【问题描述】:我目前正在学习使用 Framework Codeigniter 查看数据库中数据的教程。我学习的方法有很多种。是否有更可靠的方法 - 显示为数组或在视图文件中使用“foreach”?任何意见都会有所帮助。
这是我使用两种方法的代码:
方法一模型:
function getArticle()
$this->db->select('*');
$this->db->from('test');
$this->db->where('author','David');
$this->db->order_by('id', 'DESC');
$query=$this->db->get();
if($query->num_rows() > 0)
foreach ($query->result() as $row)
$data[] = $row;
return $data;
$query->free_result();
方法一查看文件:
<?php foreach($article as $row) ?>
<h3><?php echo $row->title; ?></h3>
<p><?php echo $row->content; ?></p>
<p><?php echo $row->author; ?></p>
<p><?php echo $row->date; ?></p>
<?php ?>
方法2模型: 类 News_model 扩展 CI_Model
function getArticle()
$this->db->select('*');
$this->db->from('test');
$this->db->where('author', 'David');
$this->db->order_by('id', 'DESC');
$query=$this->db->get();
if ($query->num_rows()>0)
return $query->row_array();
$query->free_result();
方法二查看文件:
<?php echo '<h3>' .$article['title'].'</h3>' ?>
<?php echo '<p>' .$article['content']. '</p>' ?>
<?php echo '<p>' .$article['author']. '</p>' ?>
<?php echo '<p>'. $article['date']. '</p>' ?>
【问题讨论】:
考虑到查询只返回一条记录,我会更喜欢第二种方法。 不明白为什么你在第一个方法的模型中通过结果集循环而不返回它? @Vlakarados,当你在我的第一种方法中说我正在循环而不是返回它时 - 你能描述一下我将如何返回它吗?道歉,因为我是框架的新手,不确定如何从视图中显示。 我稍后会发布它作为答案 【参考方案1】:我会这样做:
型号
function getArticle()
$this->db->select('*');
$this->db->from('test');
$this->db->where('author','David');
$this->db->order_by('id', 'DESC');
return $this->db->get()->result();
控制器
function get_tests()
$data = array(
'tests' => $this->mymodel->getArticle()
$this->load->view('myview', $data);
查看
<table>
<?php foreach($tests as $test) ?>
<tr>
<td><?php echo $test->title;?></td>
<td><?php echo $test->content;?></td>
<td><?php echo $test->author;?></td>
<td><?php echo $test->date;?></td>
</tr>
</table>
如果您希望使用数组而不是对象,请在模型更改行中
return $this->db->get()->result();
到
return $this->db->get()->result_array();
在视图中回显
<td><?php echo $test['title'];?></td>
附言
在您的代码中,您使用了$query->free_result();
,但它甚至不会运行,因为当您使用关键字return
时,之后的所有内容都不会被解析。反正没有必要释放结果。
附注 2。
您使用if($query->num_rows() > 0)
,但没有else
部分,这意味着它也没有必要。如果您不向视图中的 foreach 语句返回任何行,则不会出现任何错误。
【讨论】:
非常感谢,这更简洁、更易于理解,并且可能会使用数组——但知道如何使用对象方式完成操作很方便,所以 sn-p 这个!非常感谢。 我真的推荐使用对象,特别是如果您是 PHP 和 PHP 框架中的 OOP 新手。当我开始使用数组时,我认为它更简单,但现在我明白这是一种幻觉,对象可以让你变魔术。在 CodeIgniter 中你不调用对象的静态方法,这让你更容易上手,但这是你自己决定的!以上是关于Codeigniter:foreach 方法或结果数组?? [模型+视图]的主要内容,如果未能解决你的问题,请参考以下文章
foreach 给了我四次相同的行(PHP、Active Record、CodeIgniter)
PHP CodeIgniter Foreach 返回不正确的数据