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

しかし、「挿入後」のログエントリはありません。挿入自体は発生せず、挿入後のログ エントリも発生しません。

私はDBからかなりうまく読むことができます。そのため、「config/database.php」でユーザーのユーザー権限をphpmyadminにチェックインしました。そのユーザーには、INSERTを含むすべての権限があります。

2つの質問:

  1. 何が問題ですか?私はどんな間違いをしていますか?
  2. insert ステートメントで何が起こっているのかを知るにはどうすればよいでしょうか? (ログには何も見つかりません。)
  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(); 

あなたが通過しているものを正確に見るために。次に、insert ステートメントが適切に作成されているかどうかを確認します

于 2012-04-23T23:15:27.017 に答える
0
  1. 私が最初に考えたのは、json_encode の代わりに json_decode を使用すべきではないかということでした。

  2. 設定しましたerror_reporting(E_ALL);か?

于 2012-04-23T14:47:14.383 に答える