使用PHP SQLSRV从结果集中返回特定行

时间:2018-09-12 16:49:55

标签: php arrays sqlsrv

我有一个存储过程,该存储过程以以下格式返回两列数据,这些数据将用于一系列图表;

Minutes, [6,15,44,12,15,14,9,5,4,11]
Hours, [41,5,28,7,5,4,19,8,25,6]
Weeks, [1,1,1,1,2,1,2,3,1,1]

我可以使用以下命令在屏幕上方返回所有这些值:

$result = sqlsrv_query($conn2, $sql, $params) or die( print_r( sqlsrv_errors(), true)) ;

while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_NUMERIC) ) {
  echo $row[0].", ".$row[1]."<br />";
}   

我可以使用以下方式将分钟,小时和周设置为变量:

$row = sqlsrv_fetch($result, SQLSRV_SCROLL_FIRST);  
$v1 = sqlsrv_get_field( $result, 0);  
$row = sqlsrv_fetch($result, SQLSRV_SCROLL_NEXT);  
$v2 = sqlsrv_get_field( $result, 0);
$row = sqlsrv_fetch($result, SQLSRV_SCROLL_NEXT);  
$v3 = sqlsrv_get_field( $result, 0);  

如何将数组从第二列转换为变量?

1 个答案:

答案 0 :(得分:0)

我在上面的评论中回答了我的问题! DOH!

这是一个数组,而不是字符串,因此使用原始代码,我只需要将其更改为;

$row = sqlsrv_fetch($result, SQLSRV_SCROLL_FIRST);  
$v1 = sqlsrv_get_field( $result, 0);
$v2 = sqlsrv_fetch_array( $result, 1);  
$row = sqlsrv_fetch($result, SQLSRV_SCROLL_NEXT);  
$v3 = sqlsrv_get_field( $result, 0);
$v4 = sqlsrv_fetch_array( $result, 1);  
$row = sqlsrv_fetch($result, SQLSRV_SCROLL_NEXT);  
$v5 = sqlsrv_get_field( $result, 0);
$v6 = sqlsrv_fetch_array( $result, 1);  

最终版本会在while循环中自动递增变量名;

$i=0;    
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_NUMERIC) ) {
  ${'name'.$i} = $row[0]."<br />";     
  ${'value'.$i} = $row[1]."<br />";
  $i++;
}

$ name1,$ value1,$ name2,$ value2等,直到循环结束。