【问题标题】:Codeigniter load model in controller - 500 erorr控制器中的 Codeigniter 负载模型 - 500 错误
【发布时间】:2013-03-20 10:46:49
【问题描述】:

这是我的控制器:

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


class Order extends CI_Controller {

public function index($id=-1) {
  $this->load->model('order');
}
}

当我尝试打开相应的 url 时出现错误 500。奇怪的是我在另一个控制器上以相同的方式加载模型而没有问题。

这里是路线和模型以防万一:

路线:

$route['order/(:num)'] = "order/index/$1";

型号:

<?php
    class Order extends CI_Model {

        var $fullname = '';
        var $email = '';
        var $address = '';
        var $phone = '';
        var $notes = '';
        var $facebook = '';
        //var $canvases = '';

        var $admin_notes = '';
        var $status = '';

        var $id = '';
        var $date = '';
        var $price = '';

        //var $emailStatus_recivedOrder = '';
        //var $emailStatus_sendedOrder = '';
        //var $emailStatus_askFeedback = '';

        function __construct() {
            // Call the Model constructor
            parent::__construct();
        }

        function get($search_query='', $per_page=5, $skip=0) {

            if($search_query != '') {
                $this->db->or_where('id', $search_query);
                $this->db->or_where('email', $search_query);
                $this->db->or_where('fullname', $search_query);
                $this->db->or_where('phone', $search_query);
            }

            $query = $this->db->get('entries', $per_page, $skip);
            return $query->result();
        }

        function count_all($search_query='') {
            if($search_query != '') {
                $this->db->or_where('id', $search_query);
                $this->db->or_where('email', $search_query);
                $this->db->or_where('fullname', $search_query);
                $this->db->or_where('phone', $search_query);
            }

            $this->db->from('entries');
            return $this->db->count_all_results();
        }

        function get_by_id($id) {
            return $this->db->get_where('entries', array('id' => $id), 1);
        }

        function get_active_orders_count() {
            $this->db->where('status', '1');
            $this->db->from('entries');
            return $this->db->count_all_results();
        }

        function insert_entry() {
            $this->fullname = $this->input->post('fullname');
            $this->email = $this->input->post('email');
            $this->address = $this->input->post('address');

            $this->phone = $this->input->post('phone');

            $this->facebook = $this->input->post('facebook');

            $this->notes = $this->input->post('notes');
            $this->admin_notes = $this->input->post('admin_notes');
            $this->status = $this->input->post('status');

            $this->date   = date('Y-m-d H:i:s');

            $this->db->insert('entries', $this);
        }

        function update_entry() {
            $this->admin_notes = $this->input->post('admin_notes');

            $this->db->update('entries', $this, array('id' => $this->input->post('admin_notes')));
        }
    }

错误是: 发生数据库错误

无法使用提供的设置连接到您的数据库服务器。

文件名:core/Loader.php

行号:346

【问题讨论】:

  • 你能看到究竟是什么错误吗?你有日志文件吗?
  • 不行,怎么开启?
  • 您是在本地服务器上工作还是在托管服务器上工作?
  • 本地服务器,但我不太喜欢开发。我主要负责设计和前端开发。
  • 好吧,当你在本地服务器上去你的 php 目录找到 php.ini 并用这个 error_reporting(E_ALL); ini_set('display_errors', 'On');

标签: codeigniter model


【解决方案1】:

您的控制器和型号不能相同。 给他们一个不同的名字,问题应该得到解决。所以像

控制器

class Order extends CI_Controller{ ... }

型号

class Order_model extends CI_Model{ ... }

【讨论】:

    【解决方案2】:

    在面向对象的编程中,没有两个类可以具有相同的名称。对于 codeigniter 控制器,模型都是类。因此,最好将控制器命名为 ABC_Controller 并将模型命名为 ABC_Model 以避免类名冲突。

    控制器

    class ABC_Controller extends CI_Controller { .. }
    

    型号

    class ABC_Model extends CI_Model { .. }
    

    【讨论】:

    • 这可能对你没用@Kees Sonnema。但不是提问者。
    猜你喜欢
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多