簡體   English   中英

通過CodeIgniter中的Ajax插入時發生數據庫錯誤

[英]Database error on insert through ajax in CodeIgniter

這是一個奇怪的錯誤。 我可以通過Ajax添加記錄,但是控制台顯示這種類型的錯誤:

Error Number: 1048

Column 'name' cannot be null

INSERT INTO `feedback` (`name`, `email`, `message`, `timecreated`) VALUES (NULL, NULL, NULL, 1407084933)

Filename: /var/www/html/storyline/models/feedback_model.php

Line Number: 10

結構如下:

$(document).ready(function() {
  $('#feedbacksubmit_button').click(function(){
        var name = $('#feedbackname').val();
        var email = $('#feedbackemail').val();
        var message = $('#feedbackmessage').val();
        if(message == ''){
            $('#feedbackmessage').next().show();
            return false;
        }
        var formvalues = {
            feedbackname  : name,
            feedbackemail  : email,
            feedbackmessage  : message,
        };
        $.ajax({
            type: "POST",
            url:  "<?php echo base_url();?>feedback/add",
            data: { values: formvalues },
            success: function(response) {
                alert("Thanks for your Feedback!");
            },
            error: function(error) {
                alert(error);
            }
        });
    });
});

feedback.php控制器:

<?php

class Feedback extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('feedback_model');
    }

    public function add() {
        $values = $this->input->post('values');
        $timecreated = time();
        $name = $values['feedbackname'];
        //echo $name;
        $data = array(
           'name' => $name,
           'email' => $values['feedbackemail'],
           'message' => $values['feedbackmessage'],
           'timecreated' => $timecreated,
        );
        $data['status'] = $this->feedback_model->new_feedback($data);
    }
}

feedback_model.php

class Feedback_model extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function new_feedback($values) {  
      $this->db->insert('feedback', $values);
    }
}

HTML表單代碼:

<form method="post">
    <div class="form-group">
        <div class="input-group">
            <span class="input-group-addon">Name</span>
            <input class="form-control" placeholder="Your name" name="feedbackname" id="feedbackname" type="text" />
        </div>
    </div>
    <div class="form-group">
        <div class="input-group">
            <span class="input-group-addon">@</span>
            <input class="form-control" placeholder="Your email address" name="feedbackemail" id="feedbackemail" type="text" />
        </div>
    </div>
    <div class="form-group">
        <label class="control-label" for="feedbackmessage">Message</label>
        <div class="input-group">
            <textarea class="form-control" name="feedbackmessage" id="feedbackmessage" rows="8" cols="52" placeholder="The message you want to send to us."></textarea>
            <span class="form_error">Please enter your message</span>
        </div>
    </div>
    <button type="submit" class="btn btn-primary" id="feedbacksubmit_button">Submit</button>
</form>

這些值已正確插入數據庫中,但仍然在控制台中收到該特定錯誤,說提交的值為NULL

編輯:

通過在調試器中插入斷點,我將獲得成功的警告框,而如果未打開調試器,則將獲得錯誤的警告框。

在這兩種情況下,值都會插入數據庫中。

表結構:

+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(50) | YES  |     | NULL    |                |
| email       | varchar(50) | YES  |     | NULL    |                |
| message     | text        | YES  |     | NULL    |                |
| timecreated | int(11)     | NO   |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

首先直接從表單嘗試“添加”功能。 如果可行,請檢查ajax中的代碼。 這樣,您可以檢查錯誤是否在php或ajax中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM