Codeigniter - 将数据添加到数据库

时间:2014-04-17 13:18:18

标签: php codeigniter

我正在尝试使用CodeIgniter框架向数据库添加数据。 DB方法返回true,但我在数据库中没有新数据。 有我的控制器:

class Facebook extends CI_Controller
{
    public function index()
    {
        if($this->input->is_ajax_request())
        {
            $this->load->model('user_model','user');
            $data = array();
            $data['u_ip'] = $this->input->ip_address();
            $this->user->add_user($data);
        }
    }
}

还有我的模特:

class User_model extends CI_Model
{
    public function add_user($data)
    {
        $this->db->insert('users',$data);
        //$res = $this->db->insert('users',$data); (true)
    }
}

更新 有我的数据库: id_users(int 255)AI,key u_ip(varchar 100)

3 个答案:

答案 0 :(得分:1)

另外,请确保您的$data看起来像这样:

$data = array(
    "u_ip" => $this->input->ip_address(),
);

$this->insert("data", $data);

或者如果来自其他文件,请执行以下操作:

$this->insert("users", $data[0];)

请记住加载数据库:

$this->load->database();

这将在add_user($data)范围内,例如

class User_model extends CI_Model
{
    public function add_user($data)
    {
        $this->load->database();
        $this->db->insert('users',$data);
        //$res = $this->db->insert('users',$data); (true)
    }
}

但是,您可以自动拥有这些内容,如果您转到autoload.php,则可以执行此操作:

$autoload['libraries'] = array('database');

对于你的模特:

$autoload['model'] = array('logic');

答案 1 :(得分:0)

您没有在查询中提及任何列名。请尝试以下代码 -

class User_model extends CI_Model{

public $db;
public function __construct(){
    parent::__construct();
    $this->db = $this->load->database('default',true);

}

public function add($data)
{
    $data = array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
    );

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

答案 2 :(得分:0)

$ this-> input-> is_ajax_request()

这是通过表格发布的吗?如果是这样的话,它应该是$ this-> input-> post('is_ajax_request'); is_ajax_request是您发布的输入的名称,

如果它在控制器中的另一个功能你需要做$ this-> is_ajax_request();