2015-10-14 96 views
0

我正在使用PHP查詢Microsoft SQL Server並返回結果集。我的問題是PHP代碼返回我想要的結果集,但它只是一個部分結果集。如何使用PHP查詢MS SQL Server而不列出列名?

的全表具有用於此實例中

下面數據的列是在一個HTML摘錄數據庫表的設計的代碼片斷:

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<table border="1" style="width:100%"> 
 
    <tr> 
 
    <td>COL1</td> 
 
    <td>COL2</td> \t \t 
 
    <td>COL3</td> 
 
    <td>COL4</td> 
 
    <td>COL5</td> \t \t 
 
    <td>COL6</td> 
 
    </tr> 
 
    <tr> 
 
    <td>rowdata</td> 
 
    <td>rowdata</td> \t \t 
 
    <td>rowdata</td> 
 
<td>rowdata</td> 
 
    <td>rowdata</td> \t \t 
 
    <td>rowdata</td> 
 
    </tr> 
 
    <tr> 
 
    <td>rowdata</td> 
 
    <td>rowdata</td> \t \t 
 
    <td>rowdata</td> 
 
<td>John</td> 
 
    <td>rowdata</td> \t \t 
 
    <td>rowdata</td> 
 
    </tr> 
 
</table> 
 

 
</body> 
 
</html>

以下是用於查詢SQL Server的PHP腳本:

<?php  

$serverName = "sqlserver"; 
$uid = "username";  
$pwd = "password";  
$databaseName = "databasename"; 

$connectionInfo = array("UID"=>$uid,        
         "PWD"=>$pwd,        
         "Database"=>$databaseName); 


/* Connect using SQL Server Authentication. */  
$conn = sqlsrv_connect($serverName, $connectionInfo); 

$tsql = "SELECT * FROM TABLE " ; 


/* Execute the query. */  

$stmt = sqlsrv_query($conn, $tsql); 


if ($stmt)  
{  
    echo "Statement executed.<br>\n";  
}  
else  
{  
    echo "Error in statement execution.\n";  
    die(print_r(sqlsrv_errors(), true));  
}  


    //Working Query 
/* Iterate through the result set printing a row of data upon each iteration. */ 

    while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){ 
foreach ($row as $column=>$value) 


    { 
     echo 
     $column.": " .$value."<br />"; 

    } 
    echo '<hr />'; 

} 





/* Free statement and connection resources. */  
sqlsrv_free_stmt($stmt);  
sqlsrv_close($conn);  

?>  

這是問題,只返回列和數據的那些列什麼是PHP控制檯返回

例行:

Statement executed.<br> 
COL1: rowdata<br />COL2: rowdata<br />COL3: rowdata<br />COL4: rowdata<br /> 

如果您還不知道,我試圖顯示查詢的完整結果集,而不列出PHP中的列。

I.E.

echo $row[1]; 
echo $row[2]; 
echo $row[3]; 

------------------------------------- -------------- UPDATE --------------------------------- ---------------------------

我發現有一個問題,DATETIME SQL Server中的列。當我在PHP代碼中傳遞SQL查詢中的列時,它返回完整的結果集。這是一個工作,但我想保留DATETIME格式,只是傳遞查詢而不是投它。

想法?

更新的代碼:什麼是在PHP控制檯返回

/* Connect using SQL Server Authentication. */  
$conn = sqlsrv_connect($serverName, $connectionInfo); 

$tsql = "SELECT 
COL1, 
COL2, 
COL3, 
CAST(COL4 AS VARCHAR) 'COL4' 
COL5, 
COL6 
FROM TABLE " ; 

例子:

Statement executed.<br> 
    COL1: rowdata<br />COL2: rowdata<br />COL3: rowdata<br />COL4: rowdata<br />COL5: rowdata<br />COL6: rowdata<br /> 
COL1: rowdata<br />COL2: rowdata<br />COL3: rowdata<br />COL4: rowdata<br />COL5: rowdata<br />COL6: rowdata<br /> 

正如你可以看到它返回整個結果集的表。

+0

看來,當我回顯每列時,也會返回4列的限制。我想知道可以返回的函數是否有限制?對於我想要做的事似乎很麻煩。我需要的是一個SELECT語句的完整結果集... –

回答

0

您的代碼正在嘗試將行讀取爲關聯數組。嘗試使用sqlsrv_fetch_assoc而不是sqlsrv_fetch_array正如您現在所做的那樣。

//replace the function call in the line below! 
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){ 
foreach ($row as $column=>$value) 


    { 
     echo 
     $column.": " .$value."<br />"; 

    } 
    echo '<hr />'; 

} 
+0

我不認爲你可以給我一個例子我的好人,不知道我會添加這個嗎? –

+0

我編輯了回覆 –

+0

更改爲sqlsrv_fetch_assoc($ stmt,SQLSRV_FETCH_ASSOC) –