首页 文章

在框架中将数据插入数据库

提问于
浏览
0

我是codeigniter的新人 . 我需要在数据库中插入数据,我在名称Home.php上创建一个控制器,下面是该代码;当我正在运行时,我收到错误消息:未定义属性:Home :: $ Yes.Kindly help拜托,先谢谢

<?php
   defined('BASEPATH') OR exit('No direct script access allowed');
   class Home extends CI_Controller{
        public function index()
    {
        $this->load->database();
        $this->load->model('yes');

    }
    public function savedata()
    {
        $this->load->view('demo');
        if($this->input->post('submit'))
        {
        $name=$this->input->post('name');
        $email=$this->input->post('email');
        $content=$this->input->post('content');
        $this->Yes->saverecords($name,$email,$content);     
        echo "Records Saved Successfully";
         }
         }
          }

这里是名称的视图 - demo.php

<html>
<head>
    <title></title>
</head>
<body>
<form method="post" action="" enctype="multipart/form-data"  
 id="User">     


               <h2 align="center">Student Marks</h2>
               <h3>Name:</h3>               
               <input type="text" name="name" />        
               <h3>Email ID</h3> 
               <input type="text" name="email" />       
               <h3>Content </h3>  
               <input type="text" name="content" />   


        <button type="submit" value="submit" name="submit" >Submit</button>
        <button type="reset" value="Reset" >Reset</button> 


        </form>

</body>
</html>

这是Yes.php的模型页面

<?php
class Yes extends CI_Models
{
    function saverecords($name,$email,$content)
    {
    $query="insert into news values('$name','$email','$mobile')";
    $this->db->query($query);
    }
}

2 回答

  • 0

    首先,您必须在控制器中加载模型 .

    defined('BASEPATH') OR exit('No direct script access allowed');
       class Home extends CI_Controller{
     function __construct() {
            parent::__construct();
            $this->load->model('Yes');
    
        }
     public function savedata()
        {
            if($this->input->post('submit'))
            {
           insert_array=array(
    'name' => $this->input->post('name'),
    'email' => $this->input->post('email'),
    'content' => $this->input->post('content')
    );
    $data_id = $this->Yes->saverecords($insert_array);
    if($data_id >0){
    echo "Records Saved Successfully";
    }
             }
             }
    }
    

    In Model

    function saverecords($insert_array) {
            if ($this->db->insert('news', $insert_array)) {
                return $this->db->insert_id();
            }
            return 0;
        }
    
  • 0

    Hope this will help you

    在控制器加载 databasemodel 这样的 __construct 中,您只是将其添加到 index 方法

    public function __construct()
    {
       parent::__construct();
       $this->load->database();
       $this->load->model('yes');
    }
    
    public function index()
    {
    }
    
    public function savedata()
    {
        if($this->input->post('submit'))
        {
            $name = $this->input->post('name');
            $email = $this->input->post('email');
            $content = $this->input->post('content');
    
            $data = ['name' => $name,'email' => $email,'content' => $content];
            $insert_id = $this->yes->saverecords($data); 
            if ($insert_id)
            {
                echo "Records Saved Successfully";
            }    
    
        }
        $this->load->view('demo');
    }
    

    Second

    savedata() 方法中 $this->load->view('demo'); 是您的表单然后表单url是好的但如果不是表单操作应重定向到 savedata 方法,因为您正在访问其中的post值

    <form method="post" action="<?=base_url('home/savedata');?>" enctype="multipart/form-data">
    

    第三,你的模型应该是这样的:

    <?php
    class Yes extends CI_Models
    {
        function saverecords($data)
        {
           $this->db->insert('table_name', $data);
           return $this->db->insert_id();
        }
    }
    

相关问题