3

数据是这样从前端发送的:

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){} );

在我的“主”控制器中,我有:

$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"}

但是没有“插入后”日志条目。插入本身不会发生,插入后的日志条目也不会发生。

我可以很好地读取数据库。所以我在 phpmyadmin 中检查了“config/database.php”中用户的用户权限,并且该用户拥有所有权限,包括 INSERT。

所以两个问题:

  1. 问题是什么?我犯了什么错误?
  2. 我什至如何开始找出插入语句发生了什么?(我在日志中找不到任何东西。)
  3. 我正在查看 xampp/apache/logs/error.log 和 xampp/php/logs/php_error_log。我应该查看其他日志吗?
4

5 回答 5

3

尝试把 $this->db->_error_message(); 数据库插入后

像这样 ...

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: ");
于 2012-04-23T14:49:17.353 回答
1

你是不是错过了这个

$post_data['user_id']

相反,您使用的是不带引号的

于 2012-04-24T09:29:52.917 回答
1

不要忘记在您的插入语句之后使用$this->db->last_query()以查看插入语句的样子。将该插入语句复制并粘贴到您的 sql 客户端中,以查看该查询是否真正独立运行。

于 2012-04-23T20:40:03.697 回答
1

尝试添加

ini_set("display_errors", "1");

同样在您插入之前,

var_dump($data); die(); 

看看你正在传递什么。然后在此处检查以查看您是否正确形成了插入语句。

于 2012-04-23T23:15:27.017 回答
0
  1. 我想到的第一件事是:你不应该使用 json_decode 代替 json_encode 吗?

  2. 你定了error_reporting(E_ALL);吗?

于 2012-04-23T14:47:14.383 回答