2013-09-18 5 views
0

У меня недавно настроенный сервер.Инструкция по вставке MySQL выполняется несколько раз и вставляет несколько записей за раз

Я пытаюсь простую инструкцию вставки в MYSQL.

Мой код, как показано ниже

$stmt=mysqli_prepare($this->db->initCon(), 
"INSERT INTO user_exam_taken 
(user_exam_id, completed, last_question_id, mode, question_ids, time_elapsed, score) 
VALUES ('".$request->user_exam_id."', '".$request->completed."', 
'".$request->last_question_id."', '".$request->mode."', '".$request->question_ids."', 
'".$request->time_elapsed."', '".$request->score."');"); 
// This is the entire insert and its not in a loop 
mysqli_stmt_execute($stmt); 

После выполнения выше вставки заявления Если я смотрю в таблицу, несколько строк вставляются. Но сценарий запускается только один раз.

Я проверяю, что я также поместил поле в эту таблицу с типом timestamp (CURRENT_TIMESTAMP), которое покажет текущее значение временной метки, и здесь это будет одинаково для нескольких записей после выполнения этого оператора вставки.

Обновлено:

Найти ниже для целой функции

function addExamResults(Exam_ResultVO $request) 
     { 
      $stmt=mysqli_prepare($this->db->initCon(),"INSERT INTO `user_exam_taken` (`user_exam_id`, `completed`, `last_question_id`, `mode`, `question_ids`, `time_elapsed`, `score`) VALUES ('".$request->user_exam_id."', '".$request->completed."', '".$request->last_question_id."', '".$request->mode."', '".$request->question_ids."', '".$request->time_elapsed."', '".$request->score."');"); 
      mysqli_stmt_execute($stmt); 
      $request->id=$this->db->getLastInsertId(); 
      return $request; 
     } 

я использую AMFPHP написать класс обслуживания, который имеет эту функцию и передний конец которого Flex приложение.

Как я уже говорил, все это приложение отлично работает на другом сервере, но в последнее время оно было перенесено на AWS-сервер.

+0

Не могли бы вы также показать код до и после утверждения (может быть, целая функция?). Является ли утверждение в цикле или чем-то еще? И, пожалуйста, также покажите всю инструкцию SQL. – Quasdunk

+0

Пожалуйста, скопируйте всю инструкцию mysqli_prepare. – Grzegorz

+0

Проверьте также с помощью инструментов firebug или chrome dev, которые ваш браузер запрашивает только PHP-скрипт один раз (пусто получить ошибки URL-адресов, пустые img src) – regilero

ответ

0

Как не код выше, существует не так, что несколько строк могут быть вставлены, если:

  • Сценарий не вызывается несколько раз. Вы можете проверить это, используя firebug или fiddler для отслеживания запросов в вашем браузере.
  • Существует триггер, который вызывает дублирование.

Кроме того, обновление страницы несколько раз также приведет к появлению нескольких вставок.

Это поможет получить больше кода, чтобы узнать, есть ли проблема в другом месте.

+0

Привет, я разместил больше кода выше, проверьте PLS. – Jack

+0

Я уверен, что триггер не может вставить другую строку в ту же таблицу. – Vatev

+0

Зависит от того, для чего запрограммирован триггер;). Я перечислил все варианты, даже если они немного маловероятны, поэтому Op может проверить. –

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