2017-02-07 16 views
1

我想用PHP運行一個MSSQL存儲過程,然後取得結果並將它們回顯到頁面。結果作爲兩個不同的記錄集與一堆列輸出。請參閱screenshot多個Recordset/Columns從MSSQL存儲過程回顯到PHP

我修改了一些變量名稱和輸出以保護一些敏感信息,但下面的SQL代碼正是我在MSSQL Server Management Studio中運行的,它返回上面鏈接的輸出屏幕截圖。

我還試圖通過PHP下面,它是一個沒有返回結果:

if ([email protected]_connect($host,$username,$password)) { 
    $error = $db_connect_error; 
    echo $error; 
} 
@mssql_select_db($dbname); 
$stmt=mssql_init("[dbo].[stored_procedure_name]"); 
mssql_bind($stmt, "@StartTime", $start_last, SQLVARCHAR, FALSE); 
mssql_bind($stmt, "@EndTime", $end_last, SQLVARCHAR, FALSE); 
mssql_bind...continued for all variables 
$result = mssql_execute($stmt); 
$arr = mssql_fetch_row($result); 
print_r($arr); 

我試過幾個其他不同的方式,我發現谷歌搜索通過得到的數據進行呼應或保存到PHP中的數組,但我沒有嘗試過的任何工作。

,如果沒有在MSSQL Server Management Studio中的問題運行

MSSQL聲明,這是默認的格式,當我找到這個存儲過程,並從MSSQL SMS運行:

DECLARE @RC int 
DECLARE @StartTime datetime 
DECLARE @EndTime datetime 
DECLARE @a varchar(4000) 
DECLARE @b varchar(4000) 
DECLARE @c varchar(50) 
DECLARE @d varchar(50) 
DECLARE @e varchar(50) 
DECLARE @f varchar(50) 
DECLARE @g int 
DECLARE @h int 
DECLARE @i int 
DECLARE @j int 
DECLARE @k int 
DECLARE @l int 
DECLARE @m int 
DECLARE @n int 
DECLARE @o int 
DECLARE @p int 
DECLARE @q int 
DECLARE @r varchar(100) 
DECLARE @s int 
DECLARE @t float 
DECLARE @u float 
DECLARE @v float 
DECLARE @w int 

-- TODO: Set parameter values here. 

SET @StartTime = '2017-02-01 07:30' 
SET @EndTime = '2017-02-01 19:30' 
SET @a = 'string' 
SET @b = 'string' 
SET @c = 'string' 
SET @d = 'string' 
SET @e = 'string' 
SET @f = 'string' 
SET @g = 105 
SET @h = 108 
SET @i = 101 
SET @j = 147 
SET @k = 124 
SET @l = 141 
SET @m = 103 
SET @n = 186 
SET @o = 185 
SET @p = 113 
SET @q = 182 
SET @r = 'string' 
SET @s = 77 
SET @t = 101.5 
SET @u = 1000 
SET @v = 25.4 
SET @w = 1 

EXECUTE @RC = [dbo].[spLocal_RptCvtgLinestatus] 
    @StartTime 
    ,@EndTime 
    ,@a 
    ,@b 
    ,@c 
    ,@d 
    ,@e 
    ,@f 
    ,@g 
    ,@h 
    ,@i 
    ,@j 
    ,@k 
    ,@l 
    ,@m 
    ,@n 
    ,@o 
    ,@p 
    ,@q 
    ,@r 
    ,@s 
    ,@t 
    ,@u 
    ,@v 
    ,@w 
+0

在哪裏你的連接?另外,您應該考慮更新爲'mysqli_ *'或'PDO'。 – nerdlyist

+0

糟糕,我沒有添加連接信息,我已將它添加到其他PHP代碼上方的原始文章中。 –

回答

0

首先作爲我的評論中提到,你應該想想更新至mysqli_*PDO

爲了您的當前設置你缺少的連接,它看起來像

$connection = mssql_connect($servername, $username, $password); 
//Select a db 
mssql_select_db('your_db_name', $connection); 

//Use the connection. I do not think you need to fully qualify the sproc name. 
$stmt = mssql_init('stored_procedure_name', $connection); 

而且,在做的時候mssql_fetch_row它只返回一行,所以你會想循環播放:

$data = array(); 
while ($row = mssql_fetch_row($result)){ 
    $data[] = $row; 
} 

print_r($data); 
+0

啊,工作!謝謝!是的,我不認爲更新是一個可行的選擇在這一點上出於不同的原因,但我想補充說,爲了解決一些NULL錯誤,我不得不補充: mssql_query('set ANSI_NULL_DFLT_ON ON',$連接); –