簡體   English   中英

使用PHP語句將MySQL插入到多個表

[英]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自動增量

http://php.net/manual/mysqli.insert-id.php

插入會創建新記錄,更新會更改現有記錄。 使用當前方案,您需要插入概要文件。 顯然,這意味着您不能使用與更改配置文件相同的代碼來創建配置文件。 但是還有另一個選擇,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.

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