我正在尝试调用预准备语句并检索所需数据。准备好的声明由另一位开发人员创建,他们的指示是:</ p>
declare @DeliveryC nvarchar(15), @DeliveryS float, @ErrMsg varchar
EXECUTE my_prepared_statement @CustNum = 'XX', @PostCode = '2222', @Suburb = 'XX'
, @DeliveryCode = @DeliveryC output, @DeliverySurcharge = @DeliveryS output, @ErrMsg = @ErrMsg output
我一直收到这个错误:
数组([0] =&gt;数组([0] =&gt; 42000 [SQLSTATE] =&gt; 42000 [1] =&gt; 201 [code] =&gt; 201 [2] =&gt; [Microsoft] [SQL Server的ODBC驱动程序13] [SQL 服务器]过程或函数'my_prepared_statement'需要参数 “@DeliverySurcharge”,未提供。
我的PHP代码如下所示:
$serverName = "XX";
$connectionInfo = array( "Database"=>"XX", "UID"=>"XX", "PWD"=>"XX");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if($conn) {
echo "Connection established";
$sql = "{call my_prepared_statement( ?, ?, ? )}";
$custNum = "XX";
$postcode = "2222";
$suburbname = "XX";
$dcode = "dcode";
$dsur = 0.0;
$emsg = "error";
$params = array(
array($custNum, SQLSRV_PARAM_IN),
array($postcode, SQLSRV_PARAM_IN),
array($suburbname, SQLSRV_PARAM_IN),
array(&$dcode, SQLSRV_PARAM_OUT),
array(&$dsur, SQLSRV_PARAM_OUT),
array(&$emsg, SQLSRV_PARAM_OUT)
);
$stmt3 = sqlsrv_query( $conn, $sql, $params);
if( $stmt3 === false )
{
echo "<br/>Error in executing statement 3.<br/>";
die( print_r( sqlsrv_errors(), true));
}
echo "surcharge: " . $dsur . " --- code: " . $dcode;
}
else {
echo "Connection could not be established";
}
The developer who created the prepared statement has sent me through this information:
declare @DeliveryC nvarchar(15), @DeliveryS float, @ErrMsg varchar
EXECUTE my_prepared_statement @CustNum = 'XX', @PostCode = '2222', @Suburb = 'XX'
, @DeliveryCode = @DeliveryC output, @DeliverySurcharge = @DeliveryS output, @ErrMsg = @ErrMsg output
我以前从未真正使用过这样的预处理语句,所以我有点迷失了。对不起,如果我没有解释这个。任何想法如何修复错误并获取数据?