我在PHP脚本中使用SQLSRV成功连接到SQL Server:
$name = 'SERVERNAME';
$db = 'DBNAME';
$par = array("Database"=>$db);
$conn = sqlsrv_connect($name, $par);
我还有下面的T-SQL脚本:
Declare @dt datetime;
SET @dt = GETDATE();
EXEC oik..SrezLTGES @Cat = 'Ë', @Ids = '140539,140540,140589,150395,180395,180396,180445',@Time = @dt
程序参数为:
我不知道如何在PHP中执行这个查询,有什么想法吗?
1条答案
按热度按时间5m1hhzi41#
这里可能的方法是参数化语句并使用
sqlsrv_query()
。如documentation中所述,*sqlsrv_query函数非常适合于一次性查询,除非出现特殊情况,否则应作为执行查询的默认选择 *,*sqlsrv_query函数同时进行语句准备和语句执行,可用于执行参数化查询 *。存储过程有
varchar
参数(我几乎可以肯定,您使用的是西里尔语排序规则),因此您可能需要使用适当的编码(连接选项中的"CharacterSet" => "UTF-8"
或"CharacterSet" => SQLSRV_ENC_CHAR
)和/或对参数值进行字符集转换(例如iconv()
)。如果存储过程返回数据,则可以尝试使用
sqlsrv_fetch_array()
检索返回的数据。还可以使用SET NOCOUNT ON
防止SQL Server将受影响的行数作为结果集的一部分传递。下面的示例(基于您的代码)是您的问题的一种可能的解决方案: