[英]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_id
是orders_table
的外键,但是如果它也用作orders_table
的主键,则在创建任何后续订单时会导致重复,因此,新订单的插入将失败。
这些可能会帮助您帮助我们更好地了解正在发生的事情。
orders_table
如何创建? Orders_table
的主键是Orders_table
? 另外,由于您正在使用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.