2016-08-09 48 views
2

我已經創建了一個存儲過程,其中包含一些輸入參數和一個輸出參數。當我試圖從PHP調用它時給我一個錯誤。 我的代碼是如下:PHP Sql服務器輸出參數給出錯誤

​​

錯誤我得到:

陣列([0] =>數組([0] => 42000 [SQLSTATE] => 42000 1 => 102 [code] => 102 2 => [Microsoft] [用於SQL Server的ODBC驅動程序11] [SQL 服務器]'@new_identity'附近的語法錯誤[message] => [Microsoft] ] [SQL Server]'@new_identity'附近的語法錯誤 。))

如果我在我的代碼改變爲:

$sql = "exec Apprasial_Details_Insert 
     @Employee_Name = '".$_POST["Emp_Name"]."', 
     @Position = '".$_POST["Position"]."', 
     @Dept_Branch = '".$_POST["Branch"]."', 
     @Location = '".$_POST["Location"]."', 
     @Appraiser_Name_1 = '".$_POST["1Appraiser"]."', 
     @Appraiser_Name_2 = '".$_POST["2Appraiser"]."', 
     @Title_1 = '".$_POST["1AppraiserTitle"]."', 
     @Title_2 = '".$_POST["2AppraiserTitle"]."', 
     @Date = '$datetime_formatted', 
     @Grand_Total = '".$_POST["GrandTotal"]."', 
     @Staff_ID = '".$_POST["Staff_ID"]."' 
     @new_identity = ?"; 
$procedure_params = array 
(
    array(&$ID['new_identity'], SQLSRV_PARAM_OUT) 
);  
$stmt = sqlsrv_query($conn, $sql,$procedure_params); 
if($stmt === false) 
{ 
    //header("Location: error.php?id=$statement"); 
    die(print_r(sqlsrv_errors(), true)); 
} 

錯誤我得到:

陣列([0] =>數組([0] => IMSSP [SQLSTATE] => IMSSP 1 => -7 [code] => -7 2 =>一個無效的PHP類型被指定爲輸出 參數。 DateTime對象,NULL值和流不能指定爲輸出參數 。 [message] =>指定一個無效的PHP類型爲 作爲輸出參數。 DateTime對象,NULL值和 流不能被指定爲輸出參數。 ))

我refered下面的帖子:

Link 1 Link 2

我在哪裏出了錯?欣賞任何建議/幫助

回答

1

@Staff_ID = '".$_POST["Staff_ID"]."'等以後需要逗號:

$ID = 0; 
$sql = "exec Apprasial_Details_Insert 
     @Employee_Name = '".$_POST["Emp_Name"]."', 
     @Position = '".$_POST["Position"]."', 
     @Dept_Branch = '".$_POST["Branch"]."', 
     @Location = '".$_POST["Location"]."', 
     @Appraiser_Name_1 = '".$_POST["1Appraiser"]."', 
     @Appraiser_Name_2 = '".$_POST["2Appraiser"]."', 
     @Title_1 = '".$_POST["1AppraiserTitle"]."', 
     @Title_2 = '".$_POST["2AppraiserTitle"]."', 
     @Date = '$datetime_formatted', 
     @Grand_Total = '".$_POST["GrandTotal"]."', 
     @Staff_ID = '".$_POST["Staff_ID"]."', 
     @new_identity = $ID"; 
$procedure_params = array 
(
    array(&$ID['new_identity'], SQLSRV_PARAM_OUT,SQLSRV_PHPTYPE_INT) 
);  
$stmt = sqlsrv_query($conn, $sql,$procedure_params); 
if($stmt === false) 
{ 
    //header("Location: error.php?id=$statement"); 
    die(print_r(sqlsrv_errors(), true)); 
} 
+0

好吧,現在我覺得愚蠢!感謝您的答案:)欣賞它:) – SR1092