簡體   English   中英

使用PHP外鍵插入mysql表

[英]Inserting into mysql table using foreign key with PHP

嗨,我有兩張桌子,

users_table 和 orders 表。

users_id 在兩個表中

作為 users_table 中的主鍵和 orders_table 中的外鍵(在 users_table 中引用 users_id)

當我嘗試下訂單時,如果這是用戶第一次下訂單,但如果用戶已經下訂單,則第二次嘗試時數據不會保存到數據庫中.. 知道為什么嗎? 或任何解決方案?

我為糟糕的英語道歉

我的 PHP 代碼:

$query = "INSERT INTO orders_table(users_id, orders_postDate, orders_category, orders_categoryId, orders_name, orders_description, orders_deliveryDate) VALUES('$users_id', '$orders_postDate', '$orders_category', '$orders_categoryId', '$orders_name', '$orders_description', '$orders_deliveryDate')";

    $result = mysqli_query($connection, $query);

    if($result){
        echo "SUCCESS";
    }else{
        echo "fail";
    }

所以假設我創建了一個帳戶,登錄並下訂單,數據成功上數據庫。 如果我嘗試向同一用戶下新訂單,我會收到失敗消息..所以出於某種原因

mysqli_query($connection, $query);

第二次失敗,我假設這是因為我的外鍵是主鍵? 我怎樣才能解決這個問題?

是的,您是對的,如果orders_table.user_id具有主鍵,那么也有一個“ unique ”鍵。 如果是這樣,則MySql不允許粘貼相同的user_id

使用ALTER TABLE sql命令刪除orders_table.user_id上的主鍵,添加帶有主鍵的新列。

您需要以下代碼:

ALTER TABLE orders_table DROP PRIMARY KEY;
ALTER TABLE orders_table ADD COLUMN `id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE orders_table ADD PRIMARY KEY(`id`);

沒有代碼/錯誤消息,很難說出問題所在。 但是,您提到過user_idorders_table的外鍵,但是如果它也用作orders_table的主鍵,則在創建任何后續訂單時會導致重復,因此,新訂單的插入將失敗。

這些可能會幫助您幫助我們更好地了解正在發生的事情。

  • 您的orders_table如何創建?
  • Orders_table的主鍵是Orders_table
  • 插入新記錄后,如何分配主鍵?
  • 由於您能夠插入第一條記錄,這意味着您已成功建立連接。 因此,代替回顯“成功”和“失敗”,而是提取mysqli錯誤

另外,由於您正在使用MySQL和PHP,因此,如果您尚未使用PDO對象,則可能需要考慮一下。 能夠使用准備好的語句是一個巨大的優勢。

您的插入查詢未從 users_table 獲取數據,因此將無法將正確的用戶數據插入 Orders_table; 其次,創建的 order_table 以 user_id 作為主鍵和外鍵,這將導致數據重復。 嘗試更改表以刪除主並為其創建另一列(主鍵)。

一個例子

ALTER TABLE orders_table DROP PRIMARY KEY;
ALTER TABLE orders_table ADD COLUMN 'id' int NOT NULL AUTO_INCREMENT PRIMARY KEY;

這應該使您的代碼現在可以工作。

暫無
暫無

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

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