2016-08-09 10 views
2

いくつかの入力パラメータと出力パラメータを持つストアドプロシージャを作成しました。 PHPから呼び出そうとしているときにエラーが出る。 私のコードは以下の通りである:PHP SQL Server出力パラメータにエラーが発生しました

​​

Iを取得エラー:

アレイ([0] =>配列([0] => 42000 [SQLSTATE] => 42000 1 => 102 [メッセージ] => [Microsoft] [SQL Server用のODBCドライバ11] [SQL Server用のODBCドライバ11] [SQL Server 2005用のODBCドライバー11] [SQL Server 2005用のODBCドライバー11] [] [コード] => 102 2 => [Microsoft] [SQL Server用ODBCドライバー11] [SQL サーバー] '@new_identity' ] [SQL Server]構文が正しくない '@new_identity'の近く)。)

私は自分のコードを変更した場合は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 = ?"; 
$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値、およびストリームは出力パラメータとして に指定できません。 [メッセージ] =>無効なPHPタイプが出力パラメータとして でした。 DateTimeオブジェクト、NULL値、および ストリームを出力パラメータとして指定することはできません。

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

関連する問題