从php执行时发生SQL Server存储过程错误

从php执行时发生SQL Server存储过程错误,php,sql,sql-server,Php,Sql,Sql Server,我正在尝试从php执行一个存储过程 在php代码中,iam向存储过程发送一个整数参数 $orderId =824; $result =mssql_bind($sp, "@orderID", $orderId, SQLINT1, true, false); 我发现了一个错误 mssql_execute()[function.mssql execute]:消息:形式参数“@orderID”未声明为输出参数,而是在请求的输出中传递的实际参数。(严重程度16) 任何人都可以说出原因吗?您必须创建存储过

我正在尝试从php执行一个存储过程

在php代码中,iam向存储过程发送一个整数参数

$orderId =824;
$result =mssql_bind($sp, "@orderID", $orderId, SQLINT1, true, false);
我发现了一个错误

mssql_execute()[function.mssql execute]:消息:形式参数“@orderID”未声明为输出参数,而是在请求的输出中传递的实际参数。(严重程度16)


任何人都可以说出原因吗?

您必须创建存储过程,以便它将参数指示为输出变量

DECLARE MyProc (@orderID int OUTPUT) AS ...
承包商签字如下:

bool mssql_bind  ( resource $stmt  , string $param_name  , mixed &$var  , int $type  [, bool $is_output = false  [, bool $is_null = false  [, int $maxlen = -1  ]]] )
因此,您的问题是将
$is\u输出设置为true

使用


我怀疑是这样的,正如Linto所说的“向存储过程发送一个整数参数”,我让一切都正常工作,但有一个问题。当我发送小oderid(例如1225100596,…)时,它正常工作,但当我发送大订单id(例如100303)时,它没有给出输出,即使有此顺序的记录。因此,我用all most all更改了mssql_bind的类型参数,然后我将得到一个警告“警告:mssql_execute()[function.mssql execute]:警告!某些字符无法转换为客户端的字符集。未转换的字节已更改为问号(“?”)。(严重程度16)”。你有什么想法吗?你的问题是SQLINT1数据类型。请参阅。SQLINT1是一个单字节,-128到127。请改用SQLINT4。非常感谢SamStephens。我的问题已经解决了。我需要用php代码创建特定的存储过程吗?我是指来自sql Server的存储过程否。如果存储过程需要@orderID参数作为输出参数,您可以使用创建该参数时使用的相同技术/工具对其进行更改。您是否希望存储过程将@orderID值发送到PHP代码中?如果没有,则您希望查看@SamStephens answer并保持该过程不变。我已完成了所有工作,但有一个问题。当我发送小oderid时(例如1225100596,…)它可以工作,但当我发送大订单id例如(100303)时,它不会给出输出,即使有此订单的记录。因此,我用all most all更改了mssql_bind的类型参数,然后我将得到一个警告“warning:mssql_execute()[function.mssql execute]:warning!一些字符)无法转换为客户端的字符集。未转换的字节已更改为问号(“?”)(严重性16)”。您是否有任何ideaHi BOB,我从SamStephens处获得了最后一个问题的答案。非常感谢您对BOB的兴趣。我的问题结束了
$orderId =824;
$result =mssql_bind($sp, "@orderID", $orderId, SQLINT1, false, false);