Вот table1
:
table2
2:
Я пытаюсь вставить данные в table1
, но перед тем, как вставлять данные в table1
, мне нужно проверить таблицу id_data1 и table2
. Если id_data из таблицы2 с данными id_data table1
будет вставлен в таблицу, а если нет, данные не будут вставлены в таблицу.
Например:
У меня уже есть простая форма для ввода данных в базу данных. в table2
есть данные, которые имеют id_data = AA001
, и если мы id_data = AA001
данные в table1
со значением id_data из простой формы (если мы вставим AA001 в форму), она будет вставлена, но когда мы будем вводить id_data, которые являются а не AA001, он потерпит неудачу. (не вставлен в базу данных).
А теперь что мне делать?
РЕДАКТИРОВАТЬ
Это моя модель:
<?php class My_Model extends CI_Model { public function __construct() { parent::__construct(); } public function input_data($data, $table) { $this->db->insert($table,$data); } public function view_data($table) { return $this->db->get($table); } public function checkIdData() { $query = $this->db->query("SELECT id_data FROM table2"); return $query; } }
И это функция input_data_inserted в моем контроллере:
public function input_data_inserted() { $id_data_inserted = $this->input->post('id_data_inserted'); $date = $this->input->post('date'); $id_data = $this->input->post('id_data'); $id_room = $this->input->post('id_room'); $checkID_Data = $this->my_model->checkIdData()->result_array(); if($id_data == $checkID_Data) { $data = array ( 'id_data_inserted' => $id_data_inserted, 'date' => $date, 'id_data' => $id_data, 'id_room' => $id_room ); $this->my_model->input_data($data, 'table1'); $data['table1'] = $this->my_model->viewl_data('table1')->result(); $this->load->view('admin/data/v_data', $data); } else { echo "Failed to input!"; } }
Я пытаюсь использовать этот код, но если я вставляю id_data = AA001 в форму, выполнение всегда переходит к инструкции else. Но если я изменяю значение $ checkID_Data со строкой (теперь вот так: $ checkID_Data = "AA001"), выполнение переходит к оператору if, и данные успешно вставляются.
Любое решение?
Вы можете написать инструкцию выбора вставки.
Это просто грубая визуализация, так как вы не предоставили свой код. Дайте мне знать, если вам нужно разъяснение.
INSERT INTO table1 (id_data_inserted, date, id_data, id_room) SELECT '$id_data_inserted' as id_data_inserted, '$date' as date, '$id_data' as id_data, '$id_room' as id_room FROM table2 WHERE id_data = $id_data
Ответьте на свое обновление:
Вот мой обновленный ответ для вашего контроллера. Но я по-прежнему предпочитаю свой первый ответ, потому что это намного быстрее.
$checkID_Data = $this->my_model->checkIdData()->result_array(); $passed = FALSE; foreach ($checkID_Data as $v) { if($id_data == $v['id_data ']) { $data = array ( 'id_data_inserted' => $v['id_data'], 'date' => $date, 'id_data' => $id_data, 'id_room' => $id_room ); $this->my_model->input_data($data, 'table1'); $data['table1'] = $this->my_model->viewl_data('table1')->result(); $this->load->view('admin/data/v_data', $data); $passed = TRUE; break; } } if (!$passed) { echo "Failed to input!"; }