$ this-> db-> insert_id (), кажется, стирает мое предыдущее значение переменной insert_id - PullRequest
1 голос
/ 22 ноября 2011

Вот код:

$the_question = $_POST['question'];
            $the_answer = $_POST['answer'];
            $dummy_num[] = $_POST['dummy_answer_1'];
            $dummy_num[] = $_POST['dummy_answer_2'];
            $dummy_num[] = $_POST['dummy_answer_3'];
            //Get Hidden Test ID and Q_order
            $test_id = $_POST['test_id'];
            $q_order = $_POST['q_order'];
            //Submit Question
            $data_submit_q = array (
                'type' => 1,
                'question' => $the_question,
                'done' => 1
            );
            $this->db->where('test_id', $test_id);
            $this->db->where('q_order', $q_order);
            $this->db->update('questions', $data_submit_q);
            $question_id = $this->db->insert_id();
            $time_created = date('Y-m-d H:i:s');
            //Submit Answer 
            $data_submit_a = array (
                'test_id' => $test_id,
                'question_id' => $question_id,
                'option' => $the_answer,
                'company_id' => $data['company']->id,
                'job_id' => $data['session_job_id'],
                'time_created' => $time_created
            );
            $this->db->insert('options', $data_submit_a);
            $answer_id = $this->db->insert_id();

            //Let question know that answer is right.
            $data_submit_qr = array (
                'answer_id' => $answer_id
            );

            $this->db->where('id', $question_id);
            $this->db->where('test_id', $test_id);
            $this->db->update('questions', $data_submit_qr);

Установка идентификатора ответа удаляет значение идентификатора вопроса, затем при обновлении базы данных идентификатор ответа также не имеет значения.Даже если раньше так и было.

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011

Метод $this->db->insert_id() извлекает идентификатор при выполнении базы данных вставляет (как подсказывает имя).

Вы используете его после обновления, поэтому ваш $question_id создает проблемы (я думаю, он будет установлен в FALSE, но я не знаю точно, что этот метод возвращает при вызове в неправильном контексте) , Когда вы делаете свое последнее обновление, вы используете это как условие WHERE, и если оно не установлено ...

Дело не в том, что ваш второй вызов insert_id () удаляет первый, я подозреваю, что скорее первый уже НЕ УСТАНОВЛЕН (или ЛОЖЬ)

0 голосов
/ 22 ноября 2011

Кажется, что есть ошибка с insert_id, вы можете попробовать использовать:

$query = $this->db->query('SELECT LAST_INSERT_ID()');
  $row = $query->row_array();
  $lastInsertId = $row['LAST_INSERT_ID()'];

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...