2013-06-26 36 views
6

cảm ơn trước vì bất kỳ trợ giúp nào.Làm cách nào để khóa ngoại quốc vào bảng?

Tôi có câu hỏi về khóa ngoại. Tôi hiểu khái niệm về việc có dữ liệu từ một bảng được chèn vào một bảng khác để tham khảo. Nhưng câu hỏi của tôi là, nó đến đó bằng cách nào?

Hiện tại tôi có hai bảng và hai biểu mẫu. Một hình thức chèn dữ liệu vào bảng A, hình thức khác chèn vào B. Sau đó, tôi sử dụng một chức năng để có được id từ chèn cuối cùng vào A và chèn nó vào B. Đây có phải là cách thích hợp để làm điều này hoặc tôi thiếu một cái gì đó?

+1

Bạn chèn vào bảng 'A', bạn tìm' last_insert_id() 'được thực hiện bởi truy vấn đó và bạn sử dụng id đó trong khi chèn vào' B' và có, đó là cách thích hợp và bạn không bỏ sót bất cứ điều gì . –

+0

vâng, tôi đang sử dụng chức năng đó. Cảm ơn vì đã xác nhận, tôi rất vui vì tôi không chỉ hack nó. –

+0

Bạn không hack bất cứ thứ gì và thật tuyệt khi bạn đi đến kết luận, chỉ cần giữ nó theo cách đó, nó thực sự bổ ích khi bạn có thể tự mình đi đến kết luận. Và có, gần như tất cả mọi thứ trong CNTT thực sự thẳng về phía trước :) –

Trả lời

6

Có hai khả năng:

  • Bạn biết khóa chính trước khi chèn trong bảng A => Sau đó kỹ thuật của bạn không phải là người đúng, vì bạn đang lấy một cái gì đó bạn đã thêm.
  • Bạn không biết nó (Ví dụ: tự động tăng id) => Sau đó, kỹ thuật của bạn là đúng, và tôi không nghĩ có cách nào tốt hơn để đạt được những gì bạn đang yêu cầu.

Lưu ý rằng những gì tôi gọi là chính chủ chốtchính chủ chốt của hàng trong bảng A, và một nước ngoài chủ chốt cho các hàng trong bảng B.

+0

Vâng, đó là trường hợp, nó tự động tăng lên do đó không có id cho đến sau khi chèn. Cảm ơn các bạn, đó là một cứu trợ, tôi mới đến công cụ này và tìm ra nó như tôi đi cùng, tôi luôn luôn lo lắng tôi chỉ hack nó, lol. –

1

Câu trả lời ngắn, tôi don không tin bạn không thiếu gì cả. Có rất nhiều cách để hoàn thành những gì bạn đang làm, nhưng lời giải thích của bạn có lẽ là cách được sử dụng nhiều nhất và dễ hiểu.

Cách khác là sử dụng trình kích hoạt trên bảng A để điền bảng B sau khi chèn (điều này chỉ hoạt động nếu bạn không cần bất kỳ đầu vào người dùng bổ sung nào, như đầu vào biểu mẫu để chèn vào bảng B).

-1

Vì bạn không thể chèn hai id cùng một lúc, có, đó là một cách thích hợp.

  • Trước tiên, chèn bản ghi trên bảng chính mà chúng tôi biết.
  • Thứ hai, bạn là id chèn cuối cùng bằng cách sử dụng hàm mysqli_insert_id()
  • Bây giờ hãy chèn dữ liệu vào bảng nước ngoài bằng cách sử dụng khóa chính này.
+2

Tôi đã không downvote. Cũng giống như một FYI, các lệnh 'mysql_' không còn được dùng nữa và không còn hỗ trợ nữa. Thay vào đó, bạn nên sử dụng các hàm 'mysqli_' hoặc' PDO'. – War10ck

+0

Xin chào, xem mysql_ là mặc dù vẫn chạy trên lakhs của ứng dụng. Nó đã bị phản đối. Vì vậy, bạn có thể sử dụng mysql_ hoặc mysqli_. – Shreyas

Các vấn đề liên quan