[英]mySQL INSERT to multiple tables using PHP statments
我正在努力使用PHP語句將mySQL數據插入多個表中。
我有兩個表:
用戶
user_ID(PK)
名字
姓
電子郵件
密碼
輪廓
profile_ID(PK)
user_ID(FK)
profile_image
profile_image_name
我這樣更新用戶表:
$sql = "INSERT INTO user (first_name, last_name, email, password)
VALUES
('$_POST[first_name]', '$_POST[last_name]', '$_POST[email]', '$_POST[password]')";
user_ID在數據庫中設置為自動遞增,因此執行此代碼時,插入的數據將自動分配給唯一的PK,並存儲在會話中。 但是,在同一時間(創建帳戶),我需要將user_ID作為FK插入到配置文件表中。 這樣,當用戶上載其個人資料圖像時,該圖像將被分配給他們在個人資料表中有一條記錄。
例如,在圖片上傳頁面上,我使用以下代碼:
$user_ID = $_SESSION['login'];
$ins1 = mysqli_query($db, "UPDATE profile SET `profile_image_name`='" . $profile_image_name . "' WHERE `user_ID`='$user_ID'");
$ins2 = mysqli_query($db, "UPDATE profile SET `profile_image`='" . $profile_image . "' WHERE `user_ID`='$user_ID'");
僅當配置文件表中已經存在user_ID FK時,此代碼才有效,因此如何像以前一樣使用php語句插入它? 我嘗試再次使用第一種方法,但似乎不起作用...
您可以使用insert_id
獲取您在Mysql上插入的最后一個PK自動增量
插入會創建新記錄,更新會更改現有記錄。 使用當前方案,您需要插入概要文件。 顯然,這意味着您不能使用與更改配置文件相同的代碼來創建配置文件。 但是還有另一個選擇,REPLACE的語法與INSERT相同,但是會覆蓋現有記錄。
但是,如果每個用戶只有一個配置文件,則詳細信息應保存在一個表中,而不是兩個表中。
評論:將密碼存儲為純文本是一個非常糟糕的主意,請繼續閱讀密碼哈希。 您還應該擁有一個用於SQL注入的Google; 您的身份驗證很容易繞開,並且容易銷毀。
嘗試這個:
INSERT INTO
`profile`(`user_ID`,`profile_image`,`profile_image_name`)
VALUES
('$user_ID','$profile_image','$profile_image_name')
ON DUPLICATE KEY UPDATE
`profile_image`='$profile_image',`profile_image_name`='$profile_image_name'
user_ID
必須是唯一的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.