4

我目前正在关注使用 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>' ?>
4

1 回答 1

15

我会这样做:

模型

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之后的所有内容都不会被解析。无论如何,没有必要释放结果。

PS2。

您使用if($query->num_rows() > 0) {但没有该else部分,这意味着它也没有必要。如果您不向视图中的 foreach 语句返回任何行,则不会出现任何错误。

于 2012-08-24T11:57:01.677 回答