Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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 在外键中插入正确的sql执行_Php_Mysql_Sql_Sql Server_Database - Fatal编程技术网

Php 在外键中插入正确的sql执行

Php 在外键中插入正确的sql执行,php,mysql,sql,sql-server,database,Php,Mysql,Sql,Sql Server,Database,我发现我的PK导致的错误没有值,因此我在FK上的插入失败 就像表A的uId是表B的uId FK的PK一样,所以如果我想在表B的uId中插入1,那么表A的uId的值必须是1 但这是2个查询执行吗?应该怎么写?我在第二次执行时尝试了2个sql,其中插入FK失败 我已经把评论中讨论的3种方法放到了一个 对于MySql,这是类似的,只需使用LAST_INSERT_ID vs SCOPE_IDENTITY您能更具体一点吗?通常,如果您不知道外键ID(例如,如果FK是代理密钥),则可以基于另一个外键(例如,

我发现我的PK导致的错误没有值,因此我在FK上的插入失败

就像表A的uId是表B的uId FK的PK一样,所以如果我想在表B的uId中插入1,那么表A的uId的值必须是1


但这是2个查询执行吗?应该怎么写?我在第二次执行时尝试了2个sql,其中插入FK失败

我已经把评论中讨论的3种方法放到了一个


对于MySql,这是类似的,只需使用LAST_INSERT_ID vs SCOPE_IDENTITY

您能更具体一点吗?通常,如果您不知道外键ID(例如,如果FK是代理密钥),则可以基于另一个外键(例如,自然密钥)进行查找。另外,请记住,FK可以为空,即如果A和B之间的关系是可选的。@StuartLC关系存在,我不明白你为什么说A和B是可选的。我的问题是我无法插入FK。我把两个查询放在一个文件中。第二个失败,因为它似乎无法识别第一个,我在表a的PK中插入了一个值。表a的PK是否有可能是一个标识,即您是否需要找到最近插入的a ID的ID,以便使用它插入B?如果没有,则在插入A时必须提供A的PK,因此您应该知道A ID。所以我不应该使用相同的变量来插入?相反,我应该选择插入的主键。例如,像这样插入到表格AUID值从表格A中选择uId???$stmt2=$db->prepareINSERT到usertabbrigetabId,uId值最后一次插入\U ID,$userId;有什么问题吗?
-- Null Foreign Key, if the relationship is optional
INSERT INTO B(AID) VALUES(NULL);

-- Lookup - if you know of another `natural` column in table A, 
-- e.g. here we know the Name we need to link to
INSERT INTO B(AID) VALUES((SELECT AID FROM A WHERE AName = 'Foo'))

-- Identity Insert - when A and B are inserted at the same time, 
-- and you need to pass A ID to B
INSERT INTO A(AName) VALUES('Baz');
INSERT INTO B(AID) VALUES((SELECT SCOPE_IDENTITY()));

SELECT * FROM A;
SELECT * FROM B;