Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP外键插入mysql表_Php_Mysqli - Fatal编程技术网

使用PHP外键插入mysql表

使用PHP外键插入mysql表,php,mysqli,Php,Mysqli,嗨,我有两张桌子 用户表和订单表 用户id在两个表中 作为users_表中的主键和orders_表中的外键(参考users_表中的users_id) 当我尝试下订单时,如果用户第一次能够下订单,但如果用户已经下订单,则在第二次尝试时,数据不会保存到数据库中。。知道为什么吗?或者有什么解决办法 我为糟糕的英语道歉 我的PHP代码: $query = "INSERT INTO orders_table(users_id, orders_postDate, orders_category, order

嗨,我有两张桌子

用户表和订单表

用户id在两个表中

作为users_表中的主键和orders_表中的外键(参考users_表中的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\u table.user\u id
带有主键,还有一个“
唯一的
”键。如果是这样,MySql不允许粘贴相同的
用户id

使用
altertable
sql命令删除
orders\u表上的主键。用户id
add使用主键添加新列

您需要以下代码:

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`);

是的,您是对的,如果
orders\u table.user\u id
带有主键,那么还有一个“
唯一的
”键。如果是这样,MySql不允许粘贴相同的
用户id

使用
altertable
sql命令删除
orders\u表上的主键。用户id
add使用主键添加新列

您需要以下代码:

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\u id
orders\u表
的外键,但如果它也用于
orders\u表
的主键,则在创建任何后续订单时会导致重复,因此,插入新订单将失败

这些可能会帮助您帮助我们更好地了解正在发生的事情。

  • 您的
    订单\u表是如何创建的?
  • 订单表的主键是什么
  • 插入新记录时,如何分配主键(如果分配)
  • 因为您能够插入第一条记录,这意味着您获得了成功的连接。因此,与其呼应“成功”和“失败”,不如提取答案

此外,由于您正在处理MySQL和PHP,如果您还没有使用对象,您可能需要考虑使用对象。能够使用预先准备好的语句是一个巨大的优势。

如果没有代码/错误消息,很难说出问题所在。但是,您提到,
user\u id
orders\u表
的外键,但如果它也用于
orders\u表
的主键,则在创建任何后续订单时会导致重复,因此,插入新订单将失败

这些可能会帮助您帮助我们更好地了解正在发生的事情。

  • 您的
    订单\u表是如何创建的?
  • 订单表的主键是什么
  • 插入新记录时,如何分配主键(如果分配)
  • 因为您能够插入第一条记录,这意味着您获得了成功的连接。因此,与其呼应“成功”和“失败”,不如提取答案

此外,由于您正在处理MySQL和PHP,如果您还没有使用对象,您可能需要考虑使用对象。能够使用准备好的语句是一个巨大的优势。

您的insert查询无法从users\u表获取数据,因此无法将正确的用户数据插入Orders\u表;第二,创建的order_表将user_id作为主键和外键,这将导致数据重复。尝试更改表以删除主键并为其创建另一列(主键)

一个例子

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

这应该可以让您的代码立即工作。

您的插入查询没有从users\u表中获取数据,因此无法将正确的用户数据插入Orders\u表;第二,创建的order_表将user_id作为主键和外键,这将导致数据重复。尝试更改表以删除主键并为其创建另一列(主键)

一个例子

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

这将使您的代码现在可以正常工作。

发布您的代码……您已经尝试过什么?给我们看一些代码。看看如何问一个好问题:谢谢你,杰米。我会更加小心地回显“失败”对您没有帮助。这样做:添加
或死亡(mysqli_错误($connection))
to
mysqli\u query()
。为什么您的查询中会有一些反勾号?请提交您的代码…完成您已经尝试过的操作?给我们看一些代码。看看如何问一个好问题:谢谢你,杰米。我会更加小心地回显“失败”对您没有帮助。这样做:添加
或死亡(mysqli_错误($connection))
to
mysqli\u query()
。为什么您的查询有一些反勾号?如果我现在不知道如何显示SQL转储,我所做的是在orders\u表中创建用户id,按index按钮,然后将其链接到users\u表中的主键users\u id。如果我不执行这些步骤,我的代码会工作,但当我这样做时,第二次就不工作了。我现在知道如何显示SQL转储,我所做的是在orders表中创建用户id,按index按钮,然后将它链接到users表中的主键users id。如果我不执行这些步骤,我的代码会工作,但当我这样做时,第二次就不工作了