2017-10-16 89 views
-3

PHP從存儲過程「sp_test」中返回的JSON字符串值中僅讀取2034個字符。爲什麼只有2034個字符而不是更多?php ms sql server存儲過程返回json字符串max 2034

使用PHP版本31年6月5日與SQL Express的2017年

$query = "EXEC sp_test"; 
$stmt = sqlsrv_prepare($GLOBALS['connIntern'], $query); 
if (!sqlsrv_execute($stmt)) { 
    if (($errors = sqlsrv_errors()) != null) { 
     foreach ($errors as $error) { 
      echo "SQLSTATE: " . $error['SQLSTATE'] . "<br />"; 
      echo "code: " . $error['code'] . "<br />"; 
      echo "message: " . $error['message'] . "<br />"; 
     } 
    } 
    die; 
} 
$array = []; 
if (!empty($result)) { 
    while ($row = sqlsrv_fetch_array($result)) { 
     array_push($array, $row[0]); 
    } 
} 
return $array; 

存儲過程 「sp_test對它」:

SELECT [Tracking].[orderNumber],[Tracking].[tcpState], [Stations].[startdate],[Stations].[enddate],[Stations].[tcpState],[Stations].[name] 
FROM [Tracking] 
LEFT JOIN [Stations] ON [Tracking].[orderNumber] = [Stations][orderNumber] 
FOR JSON AUTO 

格式的結果:

[ 
    { 
     "orderNumber": 123455, 
     "tcpState": 3, 
     "Stations": [ 
      { 
       "startdate": "2011-05-06", 
       "enddate": "2012-09-15", 
       "tcpState": 3, 
       "name": "Roger" 
      }, 
      { 
       "startdate": "2011-02-06", 
       "enddate": "2012-05-15", 
       "tcpState": 4, 
       "name": "Hans" 
      } 
     ] 
    }, 
    { 
     "orderNumber": 1566, 
     "tcpState": 3, 
     "Stations": [ 
      { 
       "startdate": "2011-06-06", 
       "enddate": "2012-08-15", 
       "tcpState": "6", 
       "name": "Mike" 
      }, 
      { 
       "startdate": "2011-03-06", 
       "enddate": "2012-03-15", 
       "tcpState": "6", 
       "name": "Tom" 
      } 
     ] 
    } 
] 
+0

你有一個很好的問題,這裏的開端,但有太多的小細節(示例代碼,結果等)以允許任何人以任何確定的程度回答它。 –

+0

這個結果看起來並不像它被切斷。 – miken32

+0

我在這裏看不到問題。你有兩個訂單,每個訂單有兩個工作站。 JSON不被截斷。 SQL Server可以返回等價的NVARCHAR(max),所以不應該成爲問題。 – JNevill

回答

0

發現問題

if (!empty($result)) { 
while ($row = sqlsrv_fetch_array($result)) { 
    array_push($array, $row[0]); 
} 

我想我得到整個字符串中的一個行,但我必須合併it.Like此:

if (!empty($result)) { 
     while ($row = sqlsrv_fetch_array($result)) { 
      array_push($array, $row); 
     } 
    } 

    if(count($array) > 0){ 
     foreach ($array as $json){ 
      $jsonPiece = $json[0]; 
      $jsonString .= $jsonPiece; 
     } 
    } 
相關問題