私は2つのテーブルに外部キーを持つこのプロジェクトに取り組んでいます。私はデータベースに新しいレコードを挿入しようとしているフォームを使用しています。また、dbに画像パスがあり、フォーム経由で画像パスを挿入しています。私はcodeigniterファイルアップロードライブラリを使用しています。外部キーフィールドでもフォームを送信すると、データベーステーブルの他のフィールドが更新されます。しかし、画像パスは更新されていません。フォームを送信すると、このエラーが表示されます。データベースエラー1452
A Database Error Occurred
Error Number: 1452
Cannot add or update a child row: a foreign key constraint fails (`bfh`.`products`, CONSTRAINT `category_fk` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`))
INSERT INTO `products` (`img`) VALUES ('assets/img//sakya.PNG')
Filename: C:/xampp/htdocs/CI-skeleton/system/database/DB_driver.php
Line Number: 691
コントローラ
public function add_product()
{
$result = 0;
$cat_id = $this->input->post("category_id");
$type_id = $this->input->post("type_id");
$pname = $this->input->post("p_name");
$images = $this->input->post("images");
$images = $_FILES['images']['name'];
$price = $this->input->post("price");
$this->load->model("Products_Model");
$product_id = $this->Products_Model->add_product($cat_id, $type_id, $pname, $price);
if ($product_id != 0) {
$result = $this->Products_Model->add_product_images($images);
}
if ($result && $_FILES['images']['name'][0] != "") {
$this->load->model('Image_Upload');
$result = $this->Image_Upload->upload("assets/img");
}
$this->session->set_flashdata('result', $result);
redirect('Products');
}
モデル
public function add_product($cat_id, $type_id, $pname, $price)
{
$result = $this->db->get_where("products", array('name' => $pname));
if ($result->num_rows() != 0) {
return 0; // record already exists
} else {
$data = array(
'category_id' => $cat_id,
'type_id' => $type_id,
'name' => $pname,
'price' => $price
);
if(!$this->db->insert('products', $data)) {
return -1; // error
}else{
return $this->db->insert_id();
}
return 1; // success
}
}
public function add_product_images($images)
{
$path = "assets/img/";
foreach ($images as $image) {
// if no images were given for the item
if ($image == "") {
return 1;
}
$data = array(
'img' => $path."/".$image
);
if (! $this->db->insert('products', $data)) {
return 0; // if something goes wrong
}
}
return 1;
}
あなたがしようとしていることを説明してください –
私は、製品、カテゴリ、およびタイプテーブルと呼ばれるテーブルをデータベースに持っています。商品テーブルには、カテゴリテーブルとタイプテーブルからの外部キーがあります。ここでは、productsテーブルの新しいレコードを挿入しようとしています。フォームを送信すると、画像パスフィールドを除く他のすべてのフィールドが更新され、エラーが表示されます。 – Kasun