Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 为什么在外键字段中插入值时收到外键冲突错误。插入的值与引用表中的主键匹配_Php_Sql Server_Foreign Keys_Key - Fatal编程技术网

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”。是的,我真的不喜欢使用序号值来检索列。我不使用该库,但我敢打赌有一种方法可以将列名映射到序号。