如何在sqlsrv_prepare中绑定参数?

How can I bind a parameter in sqlsrv_prepare?

提问人:Capitan Kamote 提问时间:11/8/2023 最后编辑:Capitan Kamote 更新时间:11/8/2023 访问量:30

问:

我们有这个存储过程,它是由其他 guiys 创建的

    DECLARE @RC int
DECLARE @Number varchar(10)

-- TODO: Set parameter values here.

EXECUTE @RC = [dbo].[spWebGetPrice] 
   @Number
GO

我的问题是如何使用sqlsrv_prepare在@Number上绑定值。

我正在使用此代码,但它说仍未提供参数

$sql = sqlsrv_prepare($conn,"spWebGetPrice", ['@Number', 123456]);
php sql-server

评论

0赞 Thom A 11/8/2023
当你阅读文档时,你有什么不明白的?然后我们可以尝试详细说明
0赞 Capitan Kamote 11/8/2023
目前尚不清楚的是如何在参数上绑定值,例如@Number
0赞 Thom A 11/8/2023
您需要使用参数标记 ()。页面上有一个示例,演示了如何执行名为 ;那其中有什么不清楚的??stp_Create_Item
0赞 siggemannen 11/8/2023
甚至有一些评论可以解释它:php.net/manual/en/function.sqlsrv-prepare.php#115353

答:

1赞 IMSoP 11/8/2023 #1

过程参数与准备好的查询占位符是分开的。

sqlsrv_prepare期望作为其第二个参数的完整 SQL 字符串,而不是将作为单独参数提供的数据。使用普通选择查询更容易说明这一点:?

sqlsrv_prepare($conn, 'Select * From Users Where Username=?', [$username]);

要运行存储过程,您需要执行相同的操作 - 用占位符写出 SQL:?

sqlsrv_prepare($conn, 'Exec spWebGetPrice @Number=?', [123456]);

评论

0赞 Capitan Kamote 11/8/2023
感谢您的回复,我真的很感激。这真的非常简单,因为我是这种方法的新手。