2015-10-14 106 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) –