正确的方式来显示我的查询

时间:2016-03-02 18:59:42

标签: php mysql codeigniter

我的模型中有一个查询,我需要在视图中打印数据

模型

    function get_bank()
    {
        $query = $this->db->query("SELECT
(
   12* (YEAR('account_add_date') - YEAR('start_date')) +
          (MONTH('account_add_date') - MONTH('start_date'))
) AS differenceInMonth
->FROM ('bank')
WHERE mem_id = '".$this->session->userdata('id')."'");
return $query->result();
    $data['account_age'] =  $query->row_array();

    }

我试图在我的模型中打印输出,但它不起作用,我不知道我哪里出错了。我是MVC的新手并且仍然习惯它。

查看

 <h2>age of account</h2>

<?php
$age = $this->model('profiles_model' , $data );

print "<h2>$age</h2>";

?>

控制器

function index()
    {
        $data = array();
        $this->load->model('user_profile/profiles_model');
        $query = $this->profiles_model->get_bank();


        if(!empty($query))
        {
            $data['records'] = $query;
        }

        $this->load->view('profile_view', $data);
    }

3 个答案:

答案 0 :(得分:6)

让我们先按适当的惯例编写代码。

模型

function get_bank() {
    $mem_id = $this->session->userdata('id');
    $query = $this->db
        ->select("12*(YEAR('account_add_date') - YEAR('start_date')) + (MONTH('account_add_date') - MONTH('start_date')) AS differenceInMonth")
        ->where('mem_id', $mem_id)
        ->get('bank');

    return $query;
    // $data['account_age'] =  $query->row_array(); <-- Statement after return is useless.
}

控制器

function index() {
    $data = array(
        'records' => array()
    );
    $this->load->model('user_profile/profiles_model');
    $bank = $this->profiles_model->get_bank();

    if($bank->num_rows()){
        $data['records'] = $bank->row_array();
    }

    $this->load->view('profile_view', $data);
}

查看

不确定您要对银行数据做什么,但是这里是如何打印记录的

<p>Bank data</p>
<p><?=isset($records['differenceInMonth'])?$records['differenceInMonth']:"No record found"?></p>

答案 1 :(得分:2)

你并不遥远,这样做:

控制器:

function index()
    {

        $this->load->model('user_profile/profiles_model');
        $data = $this->profiles_model->get_bank();

        $this->load->view('profile_view', $data);
    }

型号:

function get_bank()
    {
        $query = $this->db->query("SELECT
          (
          12* (YEAR('account_add_date') - YEAR('start_date')) +
              (MONTH('account_add_date') - MONTH('start_date'))
           ) AS differenceInMonth
        ->FROM ('bank')
          WHERE mem_id = '".$this->session->userdata('id')."'");

         return $query->result();
    }

查看:

<?php

foreach(differenceInMonth AS $age){

   echo "<p>" . $age . "</p>";

}

答案 2 :(得分:0)

当您加载视图时,您正在使用$data传递包含您想要显示的数据的$data['records']

由于这是您在加载数据时将数据传递到视图的方式,因此您需要以这种方式调用它:

<?php
   var_dump($records);
?>

您还需要循环访问数据,假设$ records是查询结果的数组,或者使用var_dump而不是print来验证数据是否存在。

阅读这些将有助于未来:

https://codeigniter.com/user_guide/general/views.html https://codeigniter.com/user_guide/general/models.html