2012-04-23 3 views
3

данных был послан от переднего конца, как это:запроса Codeigniter не вставляет

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. Как мне даже начать выяснять, что происходит с инструкцией insert? (Я ничего не могу найти в журналах.)
  3. Я ищу xampp/apache/logs/error.log и xampp/php/logs/php_error_log. Должен ли я смотреть на другие журналы?

ответ

0
  1. Первое, что я подумал, было: не следует использовать json_decode в смену json_encode?

  2. Вы установили error_reporting(E_ALL);?

+0

После того, как я добавил error_reporting (E_ALL) модели, как раз перед вставкой, я до сих пор не вижу каких-либо изменений/новый записи журнала. Я ищу xampp/apache/logs/error.log и xampp/php/logs/php_error_log. Должен ли я искать где-то еще? – Samudra

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: "); 
+0

Куда это вторгается? Поскольку это вызов ajax, я не могу видеть данные на экране. Могу ли я отправить его в файл журнала? – Samudra

+1

Используйте firebug или аналогичный плагин для просмотра ответа на вызов ajax. Он покажет вам, что именно выводит ваш скрипт. – Jay

+0

Это была глупая ошибка. Обнаружил, что у него была ошибка внешнего ключа. Не знал, как проверить ответы Ajax. Теперь я знаю. Большое спасибо! – Samudra

1

Не забудьте использовать $this->db->last_query() после вставки заявления, чтобы увидеть, что оператор вставки выглядит. скопируйте и вставьте этот оператор insert в свой SQL-клиент, чтобы убедиться, что запрос действительно работает сам по себе.

+0

Распечатывает пустую строку. Означает ли это, что запрос не формируется? – Samudra

+0

Коэффициенты хороши. Вы загружаете класс db? – Catfish

1

Попробуйте добавить

ini_set("display_errors", "1"); 

Также перед вашей вставкой,

var_dump($data); die(); 

, чтобы увидеть именно то, что вы проходите. Затем проверьте here, чтобы увидеть, что вы правильно формируете статут вставки.

1

Вы не пропуская этот

$post_data['user_id'] 

Вместо этого вы используете без кавычек

+0

ничего не менял. :/ – Samudra

+0

Я изначально поставил цитаты и удалил их, потому что я был так расстроен, что я попробую что угодно. Позже понял, что в запросе не было ограничения внешнего ключа. Не знал, как это проверить раньше. Теперь я знаю! Извините за беспокойство, и спасибо вам большое! – Samudra

Смежные вопросы