Php 为什么在外键字段中插入值时收到外键冲突错误。插入的值与引用表中的主键匹配
我使用自动递增主键将记录插入表中。然后我访问新的主键,并尝试将其插入一个字段,该字段是新主记录的外键。然后接收外键错误。代码是:Php 为什么在外键字段中插入值时收到外键冲突错误。插入的值与引用表中的主键匹配,php,sql-server,foreign-keys,key,Php,Sql Server,Foreign Keys,Key,我使用自动递增主键将记录插入表中。然后我访问新的主键,并尝试将其插入一个字段,该字段是新主记录的外键。然后接收外键错误。代码是: /****************** Insert new record in session table ************************/ $insBC2020sql = "insert into session (auctionid,auctiondate,created,lastupdated,sessiondate) output ins
/****************** Insert new record in session table ************************/
$insBC2020sql = "insert into session (auctionid,auctiondate,created,lastupdated,sessiondate) output inserted.*
values ('$auctionid','$saledt','$today','$today','$today')";
$insBC2020res = odbc_exec($conn_1,$insBC2020sql);
if (!$insBC2020res) {
exit("Request Error --" . odbc_errormsg($conn_1));
}
/********************* Retrieve primary key from last insert **************************/
while (odbc_fetch_row($insBC2020res)) {
$sessionid = odbc_result($insBC2020res, 1);
echo "\r\n".$sessionid. " ".$customerid;
}
}
/************************* Insert retrived value into reference table ********************/
$inssql = "insert into bidcall2020.dbo.customersession (customerid,sessionid)
values ('$customerid','$sessionid')";
echo $inssql."\r\n";
$insres = odbc_exec($conn_1, $inssql);
if (!$insres) {
exit("Request Error --" . odbc_errormsg($conn_1));
}
获取外键冲突错误。Sessionid是一个外键。检索到的值与主表中的值不匹配。请重试
$sessionid = odbc_result($insBC2020res, 0);
而不是
$sessionid = odbc_result($insBC2020res, 1);
试一试
而不是
$sessionid = odbc_result($insBC2020res, 1);
确切的外键错误是什么?我不同意下面的答案。通过INSERT语句上的OUTPUT子句返回最后一个插入的值。那部分应该没问题。但不能说我喜欢按位置检索列(即列1而不是列名)。有没有可能把output子句改为“inserted.sessionid”而不是“inserted.*”,以防万一它是错误的列?否则,它看起来没问题。正确的值是否会回显到echo语句中?$customerid值从何而来?在那一点上它已经知道了吗?谢谢-我让它工作了-将更改为“inserted.sessionid”。是的,我真的不喜欢使用序号值来检索列。我不使用该库,但我敢打赌有一种方法可以将列名映射到序号。确切的外键错误是什么?我不同意下面的答案。通过INSERT语句上的OUTPUT子句返回最后一个插入的值。那部分应该没问题。但不能说我喜欢按位置检索列(即列1而不是列名)。有没有可能把output子句改为“inserted.sessionid”而不是“inserted.*”,以防万一它是错误的列?否则,它看起来没问题。正确的值是否会回显到echo语句中?$customerid值从何而来?在那一点上它已经知道了吗?谢谢-我让它工作了-将更改为“inserted.sessionid”。是的,我真的不喜欢使用序号值来检索列。我不使用该库,但我敢打赌有一种方法可以将列名映射到序号。