正在从前端发送数据,如下所示:
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。
所以有两个问题:
答案 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)
我想到的第一件事是:你不应该使用json_decode代替json_encode吗?
您是否设置了error_reporting(E_ALL);
?