Codeigniter奇怪的数据库错误

时间:2015-09-21 12:07:48

标签: php jquery mysql codeigniter

每次我插入新数据时都会说post_id不能是NULL但是当我检查phpmyadmin时。存储正确的ID。

我使用ajax将id's从视图发送到控制器。我已经尝试alert(id)来查看id是否真的被选中并且选中了它,因此在jquery部分中没有任何问题。

它按我想要的方式工作,它只是存在这个错误并没有真正停止插入,我可以隐藏错误但我想修复它而不使用它。

jquery的

var post_id = $(this).closest('.portlet').find('.form').find('.postid').val();
        var comment = $(this).closest('.comments').find('textarea').val();
        alert("This is the post id "+post_id+"\nThis is the comment "+comment);
        $(this).closest('.comments').submit();
        $.ajax({
            type: "POST",
            url: BASE_URL+'classes/addcomment',
            dataType: 'json',
            data: {post_id: post_id, comment: comment},
            async: false
    });

在警报中,我可以看到ID和评论,它们是正确的。因此,我非常确定访问时没有问题。

控制器

public function addcomment(){
        $data = array(
            'user_id' => $this->user_id,
            'post_id' => $this->input->post('post_id'),
            'content' => $this->input->post('comment')
        );
        $this->Comment_model->addcomment($data);
        redirect('/classes/ICT141');
    }

错误

Error Number: 1048
Column 'post_id' cannot be null
INSERT INTO `post_comments` (`user_id`, `post_id`, `content`) VALUES ('4', NULL, NULL)
Line Number: 28

模型中的第28行只是

public function addcomment($data){ 
    $this->db->insert('post_comments', $data);
   }

2 个答案:

答案 0 :(得分:0)

尝试将其更改为:

var post_id = $(this).closest('.portlet').find('.form').find('.postid').val();
        var comment = $(this).closest('.comments').find('textarea').val();
        alert("This is the post id "+post_id+"\nThis is the comment "+comment);
        $(this).closest('.comments').submit();
        $.ajax({
            type: "POST",
            url: BASE_URL+'classes/addcomment',
            dataType: 'json',
            data: {"post_id" : post_id, "comment" : comment},
            async: false
    });

答案 1 :(得分:0)

在phpmyadmin中

尝试设置post_id的默认值