codeigniter-在控制器中使用模型结果调用模型中的不同函数

codeigniter-在控制器中使用模型结果调用模型中的不同函数,codeigniter,model-view-controller,Codeigniter,Model View Controller,根据用户输入,我希望在从数据库检索结果后,将结果从模型传递给控制器。返回给控制器的值将与通过同一表单提交的其他变量一起插入到另一个表中。当我试着运行我的代码时,它给出了下面的错误。Am使用codeigniter 3.0.0 A PHP Error was encountered Severity: Notice Message: Trying to get property of non-object Filename: controllers/Service_providers.php Lin

根据用户输入,我希望在从数据库检索结果后,将结果从模型传递给控制器。返回给控制器的值将与通过同一表单提交的其他变量一起插入到另一个表中。当我试着运行我的代码时,它给出了下面的错误。Am使用codeigniter 3.0.0

A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: controllers/Service_providers.php
Line Number: 68
还有这个

Error Number: 1048
Column 'bs_name' cannot be null
INSERT INTO `merchants` (`bs_name`, `business_no`, `phone_no`, `location`, `licence_no`, `commission`, `balance`, `email`, `username`, `password`) VALUES (NULL, '4', '4', NULL, '4', '4', '4', 'muokid3@gmail.com', '4', 'e4da3b7fbbce2345d7772b0674a318d5')
Filename: C:\xampp\htdocs\mafya\system\database\DB_driver.php

Line Number: 330
这是我的密码:

控制器

function add()

    {
        $facility_code = $this->input->post('facilityno');

        $data['fa_details'] = $this->Service_provider_model->getFacilityDetails($facility_code);

        if ($fa_details = null) 
        {
            echo "The Service Provider is not Recognized by the Government";
        }
        else
        {
            foreach ($data['fa_details'] as $detail) 
            {
                $bs_name = $detail->facility_name;
                $location = $detail->district;
            }

            $s_provider = array('bs_name' => $bs_name,
                    'business_no' => $this->input->post('businessno'),
                    'phone_no' => $this->input->post('phoneno'),
                    'location' => $location,
                    'licence_no' => $this->input->post('licenseno'),
                    'commission' => $this->input->post('commission'),
                    'balance' => $this->input->post('balance'),
                    'email' => $this->input->post('email'),
                    'username' => $this->input->post('username'),
                    'password' => md5($this->input->post('password')));

            if ($this->Service_provider_model->save($s_provider)) 
            {
                echo "Service Provider Successfully Added";
            }
            else
            {
                echo "Service Provider NOT Added";
            }
        }


    }
型号:

function getFacilityDetails($facility_code)
    {
        $facility_details = 'facility_details';
        $this->db->where('facility_code', $facility_code);
        return $this->db->get($this->$facility_details);
    }

function save($s_provider){
        $this->db->insert($this->merchants, $s_provider);
        return $this->db->insert_id();
    }

您必须使用result_array()或result()函数从数据库中获取值,因此您必须像这样更改您的模型

function getFacilityDetails($facility_code)
    {
        $facility_details = 'facility_details';
        $this->db->where('facility_code', $facility_code);
        return $this->db->get($this->$facility_details)->result();
    }
从中学习CI 3.0。添加了几个新功能

对于此查询,bs_name不能为null,因此请使用倒逗号指定一些值,或在表中指定一些默认值,您不需要将null放在后面,它将自动获取默认值

INSERT INTO `merchants` (`bs_name`, `business_no`, `phone_no`, `location`, `licence_no`, `commission`, `balance`, `email`, `username`, `password`) VALUES (NULL, '4', '4', NULL, '4', '4', '4', 'muokid3@gmail.com', '4', 'e4da3b7fbbce2345d7772b0674a318d5').
从查询中删除bs_name。默认值会自动填充

INSERT INTO `merchants` (`bs_name`, `business_no`, `phone_no`, `location`, `licence_no`, `commission`, `balance`, `email`, `username`, `password`) VALUES (NULL, '4', '4', NULL, '4', '4', '4', 'muokid3@gmail.com', '4', 'e4da3b7fbbce2345d7772b0674a318d5').
对于另一个问题,请确保您的
控制器名称
以大写字母开头

例如,Example.php


这在

中是新的,我已经尝试过了,但它给了我这个错误遇到了一个PHP错误严重性:注意消息:未定义变量:bs_name Filename:controllers/Service_providers.PHP行号:71和这一个严重性:注意消息:未定义变量:location Filename:controllers/Service_providers.PHP行号:74对不起,我忘了提到您正在使用对象,所以请更改模型result()函数而不是result_array()它仍然找不到应该从数据库中提取的变量'bs_name'和'location'。bs_name和location字段的值应该从DB表中提取,并插入到另一个表中,与FacilityNoi有关。如果要插入值,请从mysql表中删除notnull属性,如我所述如上所述,如果表colunmn被分配为NOTNULL,那么在插入数据时它不能为空,因此从mysql表中删除NOTNULL属性,或者分配一个默认值,以便在数据不可用于bs_模式时插入默认值。由于每个设备都没有自己的bs_名称和位置,因此它不应该有默认值。数据库中已存在的。请检查您的第一个查询,然后是提供bs_名称和位置的查询。该查询无法正常工作。如果每次查询都提供bs_名称和位置,则说明为什么会出现NULL。请确保您的问题准确无误。我想在表单中输入设施编号以及其他详细信息:用户名、密码、,电子邮件等。支持系统获取数据库中已存在的业务编号和位置,并将其与我最初输入的详细信息一起插入另一个表中。它将获取业务编号和地点,其中设施编号与我在表格中输入的设施编号相同。如果它不存在,它会给我一个信息,“服务提供商不被政府认可”。现在清楚了吗?好的,我会复制你的代码,然后编辑。试试这个我已经试过了,注意到如果我删除if语句,它会起作用。如果有if语句,则会显示“致命错误:在C:\xampp\htdocs\mafya\application\controllers\Service\u providers.php的第61行对非对象调用成员函数num_rows()”