2012-01-04 26 views
5

Tôi hiện đang cố gắng để chèn dữ liệu vào một bảng gọi là "customer_quote", bảng này hoạt động như một bảng liên kết giữa các "khách hàng" bảng và "customer_tariffs " bảng. Nó cũng ghi lại người dùng đã lấy dữ liệu qua bảng "người dùng".Không thể chèn giá trị chính nước ngoài vào liên kết bảng

Dưới đây là một sơ đồ của db của tôi:

http://i.imgur.com/LOG1T.png enter image description here

và đây là một ảnh chụp màn hình của bảng mà không được cho phép tôi để chèn vào nó.

http://i.imgur.com/i2wiU.png

enter image description here

Đây là quá trình trong làm thế nào tôi chèn vào db của tôi:

  1. dữ liệu Chèn vào bảng khách hàng
  2. Lấy id hàng sử dụng mysql_insert_id
  3. Chèn dữ liệu vào customer_quote < --- Không hoạt động!

Đây là mã:

//code above this inserted data into customer table 

//get id of row where data was just inserted 
$sustomer->cid = mysql_insert_id($db); 

//insert into customer_quote table 
$database->query("INSERT INTO customer_quote (cid) 
     Values ('$customer->cid')"); 

** New ** Thông báo lỗi

'Cannot add or update a child row: a foreign key constraint fails (quote_system . customer_quote , CONSTRAINT fk_customer_quote_customer FOREIGN KEY (cid) REFERENCES customer (id) ON DELETE NO ACTION ON UPDATE NO ACTION)'

Như bạn có thể thấy rằng thông tin phản hồi lỗi là vô ích, vì vậy sau khoảng ba tiếng đồng hồ thử nghiệm tôi đã kết luận rằng vấn đề là cột "cid" của tôi trong bảng "quote khách hàng".

Chỉ chấp nhận các giá trị nhất định, tuy nhiên biến php của riêng tôi có giá trị chính xác có sẵn để chèn qua phpmyadmin như bạn có thể thấy trong ảnh chụp màn hình bên dưới.

http://i.imgur.com/eEFou.png

enter image description here

Vì vậy, nó phải là những hạn chế hay cái gì khác trong bảng của tôi đó là ngăn chặn tôi?

Bất kỳ ý tưởng nào về cách giải quyết vấn đề này.

Cảm ơn!

+0

Yêu bài đăng chi tiết .... tôi chỉ hy vọng câu trả lời của tôi sai ... bởi vì bạn có thể đã lưu tất cả nỗ lực đó bằng cách thêm ')' ..... – ManseUK

+0

1. Bạn không xuất hiện đang sử dụng biến cid bạn vừa nhận được? Nhưng thay vì khách hàng-> cid? Tôi tưởng tượng những giải quyết trong cùng một điều? 2. Tôi không có chuyên gia PHP nhưng không nên đọc mã của bạn: "INSERT INTO customer_quote (cid) Giá trị ('$ customer-> cid')") - bạn đang thiếu một khung – BeRecursive

+0

xin lỗi đó là một loại, tôi tay gõ mã thay vì dán! – kaleeway

Trả lời

2

Tôi thực sự hy vọng một lỗi đánh máy đơn giản của nó trong câu hỏi của bạn, nhưng truy vấn của bạn không chính xác:

$database->query("INSERT INTO customer_quote (cid) 
     Values ('$customer->cid'"); 

nên

$database->query("INSERT INTO customer_quote (cid) 
     Values ('$customer->cid')"); // added closing bracket on values 
+0

Cảm ơn, nhưng bây giờ tôi nhận được lỗi này: -'Không thể thêm hoặc cập nhật hàng con: ràng buộc khóa ngoài không thành công ('quote_system'.'customer_quote', CONSTRAINT' fk_customer_quote_customer' FOREIGN KEY ('cid') TÀI LIỆU THAM KHẢO' khách hàng' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION) 'i – kaleeway

+0

' uid' cũng được yêu cầu? – ManseUK

+0

vâng, vì vậy tôi đoán tôi phải chèn nó ngay bây giờ. – kaleeway

2

Bạn đã đặt không đúng chỗ báo giá gấp đôi và bỏ lỡ một dấu ngoặc

Thay đổi dòng:

$database->query("INSERT INTO customer_quote (cid) 
    Values ('$customer->cid'"); 

để

$database->query("INSERT INTO customer_quote (cid) 
    Values ('$customer->cid')"); 
+0

Cảm ơn, nhưng bây giờ tôi nhận được lỗi này: -'Không thể thêm hoặc cập nhật hàng con: ràng buộc khóa ngoài không thành công ('quote_system'.'customer_quote', CONSTRAINT' fk_customer_quote_customer' FOREIGN KEY ('cid') TÀI LIỆU THAM KHẢO' khách hàng' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION) 'i – kaleeway

+0

@loosebruce: Giá trị của' $ customer-> cid' không tồn tại trong bảng khách hàng. – Toto

2

Bạn có một thiếu) vào cuối chèn của bạn ...

//insert into customer_quote table 
$database->query("INSERT INTO customer_quote (cid) Values ('$customer->cid'"); 

nên

//insert into customer_quote table 
$database->query("INSERT INTO customer_quote (cid) Values ('$customer->cid')"); 

BTW, bài đẹp với hình ảnh, vv ..

+0

Cảm ơn, nhưng bây giờ tôi nhận được lỗi này: 'Không thể thêm hoặc cập nhật hàng con: ràng buộc khóa ngoài không thành công ('quote_system'.'customer_quote', CONSTRAINT' fk_customer_quote_customer' FOREIGN KEY ('cid') TÀI LIỆU THAM KHẢO' khách hàng' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION) 'i – kaleeway

+0

Cũng có nghĩa là ID không hợp lệ dựa trên bảng khách hàng. Có lẽ điều tương tự sẽ xảy ra với bảng của người dùng của bạn gây ra bạn instert một NULL trong một bảng không null. –

1

Bạn thiếu phụ huynh:

"INSERT INTO customer_quote (cid) Values ('$customer->cid')" 
Các vấn đề liên quan