我想通過php在mssql數據庫中插入值。出現錯誤無法在IDENTITY_INSERT設置爲OFF時爲標識列插入顯式值。IDENTITY_INSERT設置爲關閉錯誤
我已經添加了查詢行來設置IDENTITY_INSERT,但仍然得到相同的錯誤。
我正在使用的代碼在mssql數據庫中插入值。
$serverName = "xxxx\SQLEXPRESS"; //serverName\instanceName
$connectionInfo = array("Database"=>"xxxx", "UID"=>"xxx", "PWD"=>"xxxx" , "CharacterSet" => "UTF-8");
$con = sqlsrv_connect($serverName, $connectionInfo);
if($con) {
echo "Connection established";
}
else{
echo "Connection could not be established.";
die(print_r(sqlsrv_errors(), true));
}
$query = "SET IDENTITY_INSERT dbo.xxx ON ";
$query = "INSERT INTO dbo.xxx([Id],[IdFirma], [VrstaDokumenta], [BrojDokumenta], [BrojDokumentaKroz],
[DatumDokumenta], [IdKupac], [VrstaCijene], [IdKorisnik], [NacinPlacanja], [DatumZadnjeAkcije], [Status], [StatusArhive],
[StatusIzmjene],
[StatusStampe], [VrstaFakture])
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$params = array($id,$IdFirma,$VrstaDokumenta,$BrojDokumenta, $BrojDokumentaKroz, $DatumDokumenta, $IdKupac, $VrstaCijene, $IdKorisnik,
$NacinPlacanja, $DatumZadnjeAkcije, $Status, $StatusArhive, $StatusIzmjene, $StatusStampe, $VrstaFakture);
/* Prepare and execute the statement. */
$stmt = sqlsrv_query($con, $query, $params);
if($stmt === false) {
die(print_r(sqlsrv_errors(), true));
}
錯誤我得到:
陣列([0] =>數組([0] => 23000 [SQLSTATE] => 23000 [1] => 544 [代碼] => 544 [2] => [Microsoft] [SQL Server Native Client 11.0] [SQL 服務器]當IDENTITY_INSERT設置爲OFF時,無法在表 'FKNarudzbeKupacaZaglavlje'中爲標識列插入顯式值。 [message] => [Microsoft] [SQL Server Native Client 11.0] [SQL 服務器]無法在表 'FKNarudzbeKu中插入標識列的顯式值當IDENTITY_INSERT設置爲OFF時,「pacaZaglavlje」。 ))
有人能告訴我如何解決這個問題或提供建議嗎?
您需要在設置標識插入到。希望這個鏈接可以幫助你。 http://msdn.microsoft.com/en-us/library/ms188059.aspx –
我已經在$ query =「SET IDENTITY_INSERT dbo.xxx ON」; – user3651819
但是你不是用你的實際查詢覆蓋變量'$ query'嗎?你還沒有真正運行SET IDENTITY_INSERT語句 - 你需要連接字符串,或者執行查詢(不要忘記在之後再關閉身份插件!) – Bridge