以下是table1
的结构:
table2
的结构:
我尝试将数据插入table1
,但在将数据插入table1
之前,我需要检查id_data table1
和table2
。如果table2
中与id_data table1
数据相同的id_data将插入到表中,如果没有,则数据不会插入到表中。
例如:
我已经有一个简单的表格来输入数据到数据库。
在table2
中,有一个数据有id_data = AA001
,如果我们将数据插入table1
,其值为id_data,如果我们在表单中插入AA001,那么插入,但当我们输入不是AA001的id_data时,它将失败。 (未插入数据库)。
现在该怎么办?
修改
这是我的模特:
<?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;
}
}
这是我的Controller中的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 =&#34; AA001&#34;)执行将转到if语句并成功插入数据。
任何解决方案?
答案 0 :(得分:1)
您可以编写插入选择语句。
由于您尚未提供代码,因此这只是一个粗略的可视化。如果您需要澄清,请告诉我。
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!";
}