2017-04-10 29 views
1

我想從MS SQL 2008服務器查詢數據。我正在查詢來自SQL查看的數據。不是一個SQL表。從SQL視圖MSSQL SQLSRV PHP查詢

有誰知道是否SQLSRV能夠從SQL Server查詢視圖?

下面的示例代碼。當我使用時工作表但不使用時SQL查看

我正在使用PHP版本7以及MS SQL 2008 R2。

連接

$serverName = "LOC-SVR\SQLEXPRESS"; //serverName\instanceName 

$connectionInfo = array("Database"=>"dbName","UID" => "svc_test","PWD" => "test"); 
$connect = sqlsrv_connect($serverName, $connectionInfo); 

查詢代碼

$sql = "SELECT Col1 
      , Col2 
      , Col3 
     FROM V_TEST_VIEW;"; 

sqlsrv_configure('WarningsReturnAsErrors', 0); 

sqlsrv_query($connect,$sql); 

$res = sqlsrv_query($connect, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET)); 

while ($row = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC)) 
     { 
      echo $row['Col1']; 
      echo $row['Col2']; 
      echo $row['Col3']; 
     } 

結果

沒有錯誤。只有1行從視圖返回。在Microsoft SQL Server Management Studio中,返回了幾百行。

任何幫助表示讚賞。

+0

我使用View蒙山MS SQL PostgreSQL和MySQL和createad後的意見被視爲tabels。唯一不同的是你如何創建它們,改變它們並摧毀它們。 –

+0

您創建的視圖的代碼在哪裏? –

回答

0

找到了解決方案。 http://php.net/manual/en/function.sqlsrv-fetch-object.php

我能夠使用它查詢我的視圖。

CODE

$sql = "SELECT Col1, Col2, Col3 FROM V_TEST_VIEW"; 
$stmt = sqlsrv_query($connect, $sql); 
if($stmt === false) { 
die(print_r(sqlsrv_errors(), true)); 
} 

// Retrieve each row as an object. 
// Because no class is specified, each row will be retrieved as a stdClass object. 
// Property names correspond to field names. 
while($obj = sqlsrv_fetch_object($stmt)) { 
    echo "<strong>".$obj->Col1."</strong>, ".$obj->Col2 ."<br />"; 
} 
+0

問題可能與遊標類型'SQLSRV_CURSOR_KEYSET'有關。 – alalp