我正在尝试使用存储过程从我的数据库中查询某些数据,但我为每个字段获取两次结果。
存储过程如下所示(创建代码):
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设置为2.所有数据都是正确的,我只是两次。
我在这里做错了吗?
这是一种正常行为吗?我只是一个新手才知道?
答案 0 :(得分:1)
修改 fetchType :
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC ))
引用文档:
指定要返回的数组类型的预定义常量。可能 值是SQLSRV_FETCH_ASSOC,SQLSRV_FETCH_NUMERIC和 SQLSRV_FETCH_BOTH(默认值)。
答案 1 :(得分:0)