模型数组的 Codeigniter 错误

Posted

技术标签:

【中文标题】模型数组的 Codeigniter 错误【英文标题】:Codeigniter errors for model array 【发布时间】:2014-07-02 08:43:38 【问题描述】:

这个简单的功能让我发疯——我试图从数据库中提取一行并将其作为信息数组传递给我的控制器并传递给我的视图——在将它传递给视图之前,我需要获取 slug 字段并重定向到domain/quotes/this-is-test 以显示正确的信息,但我什至无法进行基本查询。你能帮我解决我缺乏知识的问题吗!

型号

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

  function __construct()
     parent::__construct();
  

  function get_records()
    $data = array();
    $query = $this->db->select('*')
             ->from('quotes');

return $query->result();


控制器

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

class Welcome extends CI_Controller 


    public function index()
    
        $this->load->helper('url');
        $this->load->model('quotes_model');
        $data['quote']= $this->quotes_model->get_records();
        $this->load->view('welcome_message', array('data' => $data));

    

在我看来,我已经做到了:

查看

    <?php die(var_dump($data)); ?>

错误

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: data

Filename: models/quotes_model.php

Line Number: 16

array(1)  ["quote"]=> NULL 

【问题讨论】:

您忘记将模型查询结果中的数据放入data变量中 【参考方案1】:

试试

$data['quote']= $this->quotes_model->get_records();
 $this->load->view('welcome_message', $data);

并从模型返回你的结果:-

return $query->result();

return $query;

【讨论】:

然后需要检查您的查询 这是我现在的查询,但仍然是相同的函数 get_records() $data = array(); $query = $this->db->select('*') ->from('quotes') return $query->result(); 可能是您的查询不符合您的条件,因此请尝试优化您的查询 更新了我上面的模型代码,您可以看到它是一个基本查询 - 我还检查了我的表和字段名称 试试 $query = $this->db->query("select * from quotes");【参考方案2】:

试试这个

function get_records()
$data = $this->db->select('*')
         ->from('quotes')
         ->join('authors', 'authors.id = quotes.author_id')
         ->join('genre', 'genre.id = quotes.id')
         ->order_by('id', 'RANDOM')
         ->limit(1)->row_array();
///$data = array();
return $data;



try ->row_array() 如果你想获取单行。如果要获取所有记录,请尝试 result_array()。这将为您提供数组中的输出...

【讨论】:

请立即尝试,它已更新..您没有为数据分配任何结果并且您正在返回它..【参考方案3】:

您需要先通过result_array() 提取结果

更正的代码:

function get_records()
    $data = array();
    $query = $this->db->select('*')
                        ->from('quotes')
                        ->join('authors', 'authors.id = quotes.author_id')
                        ->join('genre', 'genre.id = quotes.id')
                        ->order_by('id', 'RANDOM')
                        ->limit(1);
    ///$data = array();
    if ($query->num_rows()) 
        foreach ($query->result_array() as $row) 
            $data[] = $row;
        
    
    return $data;

【讨论】:

我的控制器呢?我已经将我的代码更改为你的,我得到一个没有源代码的空白页 嗨,我的代码没有错误。请查看 codeigniter 用户指南。【参考方案4】:

你在函数中犯了一个错误

 function get_records()
$query = $this->db->select('*')
         ->from('quotes')
         ->join('authors', 'authors.id = quotes.author_id')
         ->join('genre', 'genre.id = quotes.id')
         ->order_by('id', 'RANDOM')
         ->limit(1);
///$data = array();
return $data;

你返回 $data;这应该是返回

$query->result();

【讨论】:

【参考方案5】:

你的模型有一个错误,你返回$data,它没有定义! 简单地添加这个:

return $query->result();

也改变你的控制器:

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

然后您可以像这样在视图中获取数据:

foreach ($quote as $row)
    $id=$row->author_id;
    echo $id;

【讨论】:

我已经把它改成了那个,但我认为某处有错误,因为它没有在主页上显示任何结果 全部完成,仍然是一个空白页 - 没有错误,但没有显示任何内容 您的订单子句的 id 不明确,请将其更改为 quotes.id。也可以尝试不使用连接,看看是否有任何输出(您需要将视图更改为类似 $id=$row->quote.id 这就是我尝试删除的所有内容,所以我得到的只是从引号中选择 *

以上是关于模型数组的 Codeigniter 错误的主要内容,如果未能解决你的问题,请参考以下文章

获取数据数组时出现 Codeigniter 错误

将数组作为参数传递给PHP CodeIgniter中的模型

codeigniter,从不直接调用视图,有人可以解释一下

模型codeigniter中的查询数组

Codeigniter:foreach 方法或结果数组?? [模型+视图]

将数组从模型组合并返回到控制器 - CodeIgniter