【发布时间】:2019-10-03 01:08:40
【问题描述】:
我尝试从 PHP 调用 SQL Server 存储过程。
这是我的存储过程:
CREATE procedure [dbo].[tester]
@id NVARCHAR(MAX)
AS
BEGIN
DECLARE @tab TABLE (myxml XML)
INSERT INTO @tab(myxml)
SELECT map
FROM forms
WHERE mapid = @id
SELECT * FROM @tab
END
还有我的 PHP 脚本:
<?php
$serverName = "servername";
$connectionInfo = array("UID" => "sa","PWD" => "mypass","Database" => "database");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if ($conn) {
$tsql = "exec tester 'FORMgRGVL7bfpEnpBpg7vz2sHoKAs5zxU5LW'";
$result = sqlsrv_query($conn, $tsql);
if ($result === false) {
die( print_r( sqlsrv_errors(), true) );
$response=array('response'=>'notok','data'=>'loyo');
$serverresponse=JSON_encode($response);
} else {
$row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_NUMERIC);
$response=array('response'=>'ok','data'=>$row[0]);
$serverresponse=JSON_encode($response);
}
sqlsrv_free_stmt($stmt);
} else {
$response=array('response'=>'notok','flag'=>$flag,'data'=>'cc');
$serverresponse = $serverresponse=JSON_encode($response);
}
echo ($serverresponse);
?>
当我从 SSMS 执行存储过程时,它按预期返回值,但是当我从 PHP 执行它时,它返回 null。
【问题讨论】:
-
为什么是 sqlsrv_query?这应该是
sqlsrv_execute -
我的问题是即使执行成功,服务器的返回值也始终为空
标签: php sql-server stored-procedures sqlsrv