2015-07-28 57 views
0

我想通過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」。 ))

有人能告訴我如何解決這個問題或提供建議嗎?

+1

您需要在設置標識插入到。希望這個鏈接可以幫助你。 http://msdn.microsoft.com/en-us/library/ms188059.aspx –

+0

我已經在$ query =「SET IDENTITY_INSERT dbo.xxx ON」; – user3651819

+4

但是你不是用你的實際查詢覆蓋變量'$ query'嗎?你還沒有真正運行SET IDENTITY_INSERT語句 - 你需要連接字符串,或者執行查詢(不要忘記在之後再關閉身份插件!) – Bridge

回答

1

我張貼,以防有人解決方案面臨着類似的問題:

$query2 = "SET IDENTITY_INSERT dbo.FKNarudzbeKupacaZaglavlje ON "; 

$stmt2 = sqlsrv_query($con, $query2); 

if($stmt2=== false) { 
die(print_r(sqlsrv_errors(), true)); 
} 

$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)); 
} 
相關問題