Im пытается вставить данные в MySQL с помощью рамки CodeIgniter, когда при попытке будет показывать эту ошибкуКак вставить родительскую таблицу данных и детскую таблицу одновременно?
Error Number: 1452
Cannot add or update a child row: a foreign key constraint fails (`pslsystem`.`invoice_description`, CONSTRAINT `invoice_description_ibfk_1` FOREIGN KEY (`reference_no`) REFERENCES `myinvoice` (`reference_no`) ON DELETE CASCADE ON UPDATE CASCADE)
INSERT INTO `invoice_description` (`reference_no`, `description`) VALUES (6, 'description1')
Filename: C:/xampp/htdocs/pslsystem/application/models/sample_model.php
Line Number: 21
Это мои две таблицы:
CREATE TABLE myinvoice (
invoice_id INT NOT NULL AUTO_INCREMENT,
invoice_type varchar(30) NOT NULL,
reference_no varchar(30) NOT NULL UNIQUE,
des_title varchar(300) NULL ,
PRIMARY KEY (invoice_id, reference_no)
) ENGINE=InnoDB;
CREATE TABLE invoice_description(
des_id INT NOT NULL AUTO_INCREMENT,
reference_no varchar(30) NOT NULL,
description varchar(300) NOT NULL,
PRIMARY KEY (des_id,reference_no),
FOREIGN KEY (reference_no) REFERENCES myinvoice (reference_no) on delete cascade ON UPDATE CASCADE
)ENGINE=InnoDB;
вот моя модель
function insert_entry($data1, $data2) {
$this->db->insert('myinvoice', $data1);
$data2['reference_no'] = $this->db->insert_id();
$this->db->insert('invoice_description', $data2);
}
Это мой контроллер:
if($this->form_validation->run())
{
$this->load->database();
$this->load->model('sample_model');
$data1 = array(
'invoice_type' => $this->input->post('type'),
'reference_no' => $this->input->post('ref'),
'des_title' => $this->input->post('title'),
);
$data2 = array(
'reference_no' => $this->input->post('ref'),
'description' => $this->input->post('des'),
);
$this->sample_model->insert_entry($data1,$data2);
}else{
$this->load->view('sample_view');
}
, когда я пытаюсь вставить только данные родительских таблиц. и засовывает эту ошибку.
в соответствии с вашим кодом, ограничение внешнего ключа должно быть на invoice_id, и после просмотра вашего запроса, похоже, что вставка родительской таблицы не возвращала целое число и также нужно проверить это. Я также предлагаю вам изменить структуру таблицы. –