簡體   English   中英

如何獲得另一個表的外鍵引用的主鍵?

[英]How do I get the primary key being referenced by a foreign key of another table?

我在MySQL有兩個表useruserprofile ,並且在我的Web服務器上有一個php腳本,用於處理將數據插入這些表中。

這是用於定義表的SQL命令。

CREATE TABLE user (
    USER_ID INT NOT NULL AUTO_INCREMENT,
    USERNAME VARCHAR(20),
    USER_PASSWORD VARCHAR(255),
    PRIMARY KEY (USER_ID)
);

CREATE TABLE userprofile (
    USER_ID INT NOT NULL,
    FULL_NAME VARCHAR(255),
    AGE INT,
    FOREIGN KEY (USER_ID) REFERENCES user (USER_ID)
);

我可以使用PHP函數內部執行的以下SQL命令"INSERT INTO user (USERNAME, USER_PASSWORD) VALUES ('$username', '$hashedPassword')"PHP user表成功寫入數據庫表。我定義的

我現在遇到的問題是,我需要添加諸如FULL_NAME和用戶的AGE之類的信息。 由於我允許用戶稍后再包含此信息(由於用戶隱私,它們是可選的)。 在沒有USER_ID情況下,如何准確填充數據庫表userprofile

我查看了用於創建數據庫表的文檔,並且相信我的定義是正確的。 我最初的想法是實現一個從數據庫中獲取當前用戶的USER_ID的功能,然后使用該功能將其數據插入到userprofile表中。 預期的行為,我想要的是增加與用戶之后SQL上面的命令,在userprofile也將有一行創建,因為它是由一個外鍵鏈接USER_ID 我不太確定如何保證這兩個表彼此同步。

要存儲用戶的姓名和年齡,您必須具有其USER_ID 這是因為您使用USER_ID作為用戶的唯一標識符,並且它是userprofile表中的外鍵。

通常,當用戶“登錄”(對您的網站意味着什么)時,您將確定其USER_ID並將其用作會話變量(例如,在$_SESSION ),以便在后續頁面(例如,頁面)中使用它。他們在哪里編輯個人資料。

關於同步:根據您的定義,您無需與user同時將記錄添加到userprofile中。 您可以,但是實際上是空的,因為您尚不知道他們的姓名或年齡。

這就是說,你還需要檢查他們的是否userprofile已經存在。 也就是說,您是要更新他們的個人資料還是將其添加到其中。 因此,在創建他們的用戶記錄時,創建他們的用戶配置文件記錄會更加簡單。 這樣,您就知道自己一直在更新。

您應該添加UNIQUE約束USER_IDuserprofile模式。 這樣,您就不會意外添加重復記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM