我試圖使用存儲過程來查詢我的數據庫中的一些數據,但我得到的結果兩次爲每個字段。存儲過程返回結果兩次
存儲過程是這樣的(創建代碼):
PROCEDURE [dbo].[msp_Query_Information]
@category_id tinyint
AS
BEGIN
SET NOCOUNT ON;
SELECT ,[Name]
,[Status_ID]
,CONVERT(char(19), [Update_Time], 120)
,[Max_Value]
,[Current_Value]
FROM [dbo].[MyTable]
WHERE [Category_ID] = @category_id
END
我用下面的PHP來調用存儲過程(減去錯誤檢查和調試代碼):
<?php
//define db connection
$serverName = '(local)';
$connectionInfo = array("Database"=>"MyDatabase");
//connect to database
$dbConn = sqlsrv_connect($serverName, $connectionInfo);
//execute procedure to query servers status
$spSql = "{call [dbo].[msp_Query_Information](?)}";
$id = 2;
$params = array($id);
$result = sqlsrv_query($dbConn, $spSql, $params);
//show results
while ($row = sqlsrv_fetch_array($result))
{
foreach ($row as $key => $value)
{
echo $value.'<br/>';
}
}
//close connection to database
$closeConn = sqlsrv_close($dbConn);
echo '<br/>Database connection closed.';
?>
這些是我得到的結果:
TEST
TEST
2
2
2012-09-30 16:03:00
2012-09-30 16:03:00
200
200
0
0
MyTable中只有一條記錄,其中Category_ID爲se t到2.所有的數據都是正確的,我只是簡單地把它兩次。
我在這裏做錯了什麼?
這是一個正常的行爲,我只是太多的新手知道嗎?
Soo ..如果我理解正確,SQLSRV_FETCH_BOTH(這是默認值)返回結果集兩次,一個用於NUMERIC,一個用於ASSOC? –
看來是的。如果您只按位置或僅按鍵訪問值,則這不是問題。這不是你的情況,你做一個'全面掃描'行。 – danihp
所以看起來。謝謝你們倆。 –