Codeigniter查询未插入

时间:2012-04-23 14:37:52

标签: php mysql codeigniter codeigniter-2

正在从前端发送数据,如下所示:

var data = {
                'user_id':userid,
                'qid':array[qnum].qid,
                'user_ans':userAnswers[qnum].answer,
                'user_time':userTime,
                'exerciseid':exid,
                'point_scored':points
        };
$.post('<?php echo base_url()?>main/update_user_score',
            { myData : data },
            function(result){} );

在我的&#34; main&#34;控制器,我有:

$post_data = $_POST['myData'];

$data = array(
            'user_id' => $post_data[user_id] ,
            'qid' => $post_data[qid],
            'user_ans' => $post_data[user_ans],
            'user_time' => $post_data[user_time],
            'exerciseid' => $post_data[exerciseid],
            'point_scored' => $post_data[point_scored]
        );

$this->load->model('Question_model','questions');
$this->questions->update_user_attempt($data);

在我的Question_model / update_user_attempt中:

error_log("data in model BEFORE INSERT:" . json_encode($data));
$this->db->insert('user_attempt', $data);
error_log("data in model AFTER INSERT: ");

问题是,数据到达(至少在我看来)模型很好。这是日志条目:

[23-Apr-2012 16:04:47] data in model BEFORE INSERT:{"user_id":"5","qid":"3","user_ans":"d","user_time":"3","exerciseid":"cr1","point_scored":"35"}

但是在插入&#34;之后没有&#34;日志条目。插入本身不会发生,插入后的日志条目也不会发生。

我可以从DB上读得很好。所以我在phpmyadmin中检查了用户在&#34; config / database.php&#34;中的用户权限,并且该用户具有所有权限,包括INSERT。

所以有两个问题:

  1. 有什么问题?我犯了什么错误?
  2. 我如何开始了解insert语句的内容? (我在日志中找不到任何内容。)
  3. 我正在查看xampp / apache / logs / error.log和xampp / php / logs / php_error_log。我应该看一些其他日志吗?

5 个答案:

答案 0 :(得分:3)

尝试将$ this-&gt; db-&gt; _error_message(); db insert

之后 像这样......

error_log("data in model BEFORE INSERT:" . json_encode($data));
$this->db->insert('user_attempt', $data);
echo $this->db->_error_message();
error_log("data in model AFTER INSERT: ");

答案 1 :(得分:1)

不要忘记在insert语句后使用$this->db->last_query()来查看insert语句的外观。将该insert语句复制并粘贴到您的sql客户端,以查看该查询是否实际上是在自行运行。

答案 2 :(得分:1)

尝试添加

ini_set("display_errors", "1");

在插入之前,

var_dump($data); die(); 

准确看到你传递的是什么。然后检查here,看看您是否正确形成了插入声明。

答案 3 :(得分:1)

Aren你错过了这个

$post_data['user_id']

相反,您使用的不带引号

答案 4 :(得分:0)

  1. 我想到的第一件事是:你不应该使用json_decode代替json_encode吗?

  2. 您是否设置了error_reporting(E_ALL);