【问题标题】:How to pass variables from model to controller如何将变量从模型传递到控制器
【发布时间】:2012-08-27 08:33:50
【问题描述】:

我发现我的 Ajaxcont 控制器中未定义结果变量。我不确定如何将 $results 从模型传回控制器。我只想让我的 $results 数组保存查询检索到的所有值。我做错了什么?


<?php 
    if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Ajaxcont extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();
        $this->load->model("ajax_model");
    }

    function index()
    {
        $search = $this->input->post('search', TRUE);
        $like_search= '%' .$this->db->escape_like_str($search) . '%';
        $query=  $this->ajax_model->search_course($like_search);

        if ($query)
        {
            foreach($query->result() as $row)
            {

                //$course_name_highlighted = str_ireplace($search, '<b>' .$search . '</b>' , $row->full_name); 

                $start = stripos($row-> Course_Name, $search);
                $length= strlen($search);
                $new_search = substr($row->Course_Name, $start, $length);
                $course_name_highlighted = str_ireplace($new_search, '<b>' .$new_search . '</b>' , $row->Course_Name); 
                $results[]= array(
                    'Course_Name' => $row->Course_Name,
                    'FirstName' => $row->FirstName,
                    'LastName' => $row->LastName,
                    'COURSE_ID' => $row->COURSE_ID,
                    'course_name_highlighted' => $course_name_highlighted
                    );
            }
        }

        if ( $this->input-> is_ajax_request())
        {
            $this->output->set_header("Cache-Control: no-cache, must-revalidate");
            $this->output->set_header("Expires:Mon, 4 Apr 1994 04:44:44 GMT");
            $this->output->set_header("Content-type:application/json");

            echo json_encode($results);
        }
        else 
        {
            $data['results'] = $results;
            $this->load->view('ajax_search', $data);
        }
    }
}

还有 Axaj_model 代码:

<?php

Class Ajax_model extends CI_Model 
{

    function __construct()
    {
        parent::__construct();
    }

    function search_course($like_search)
    {
        $this->db->select('FirstName, LastName, COURSE_ID, Course_Name, Semester,Time,Book, SECTION_ID');
        $this->db->from('Section');
        $this->db->join('faculty', 'faculty.FACULTY_ID = section.FACULTY_ID');
        $this->db->like('Course_Name', $like_search);
        $this->db->order_by('Course_Name');
        $query = $this -> db->get();

        //If it is all correct
        $results=array();

        if($query -> num_rows() > 0 )
        {
            return $query->result();
        }
        else
        {
            return false;
        }
    }
}

【问题讨论】:

  • 你的结果数组应该在'if'块之外声明,现在它在你回显它的地方是未定义的
  • 在没有查询结果的情况下你会得到这个吗?
  • 您能否与我们分享您在代码中的哪个位置收到“变量未定义”通知?

标签: php codeigniter


【解决方案1】:

模型返回一个多维数组。所以你应该使用实例来检索数据。

型号

$results=array(); // you don't even have to declare it

if($query -> num_rows() > 0 )
{

 $result= $query->result();
return $result;

 }

else
{
    return false;
}

控制器

function index()

 {

  $search = $this->input->post('search', TRUE);
  $like_search= '%' .$this->db->escape_like_str($search) . '%';
  $query['result']=  $this->ajax_model->search_course($like_search);

if ($query)
{
    foreach($query['result'] as $row)
    {
     //stuff here
    }
}

【讨论】:

  • 编辑了一个小错误..现在检查代码并报告输出
  • 现在我收到消息:为 foreach() 提供的参数无效
  • 试试foreach($result as $row)
  • 如果要查看模型返回的输出,请在 $query['result']= $this->ajax_model->search_course($like_search); 后添加 print_r($query['result'])
  • 感谢您的尝试,但它仍然没有返回任何内容,打印语句也不起作用。
【解决方案2】:

你的结果数组应该在'if'块之外声明,现在它在你回显它的地方是未定义的。添加这个:

$results = array();

在函数“索引”的开头。

你应该阅读variable scope

【讨论】:

  • 是的,你是对的,我忽略了这一行,但是它仍然没有返回任何数据。我认为我没有正确地从我的模型中返回数据我该如何调试并查看我返回的内容?
  • @Undermine2k 无需声明。您没有正确检索结果。由于它是一个多维数组,您必须使用实例
【解决方案3】:

您应该在索引函数的顶部声明结果。

function index(){
     $result = array ();
}

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2013-01-08
    相关资源
    最近更新 更多