【发布时间】:2015-10-14 18:58:03
【问题描述】:
我正在使用 PHP 查询 Microsoft SQL Server 并返回结果集。我的问题是 PHP 代码返回了我想要的结果集,但它只是部分结果集。
对于这个例子,整个表格有 6 列数据
以下是 HTML Snippet 中数据库中表格设计的代码 sn-p:
<!DOCTYPE html>
<html>
<body>
<table border="1" style="width:100%">
<tr>
<td>COL1</td>
<td>COL2</td>
<td>COL3</td>
<td>COL4</td>
<td>COL5</td>
<td>COL6</td>
</tr>
<tr>
<td>rowdata</td>
<td>rowdata</td>
<td>rowdata</td>
<td>rowdata</td>
<td>rowdata</td>
<td>rowdata</td>
</tr>
<tr>
<td>rowdata</td>
<td>rowdata</td>
<td>rowdata</td>
<td>John</td>
<td>rowdata</td>
<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);
?>
这是仅返回 4 列的问题,并且这些 4 列的 1 行数据
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];
等等
----------------------------------- ----更新-------------------------------------- ----------------------
我发现 SQL Server 中的 DATETIME 列存在问题。当我 CAST() 在 PHP 代码中传递 SQL 查询中的列时,它返回了完整的结果集。这是一种解决方法,但是我想保留 DATETIME 格式并只传递查询而不是强制转换它。
想法?
更新代码:
/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$tsql = "SELECT
COL1,
COL2,
COL3,
CAST(COL4 AS VARCHAR) 'COL4'
COL5,
COL6
FROM TABLE " ;
PHP 控制台返回的示例:
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 />
如您所见,它返回表的整个结果集。
【问题讨论】:
-
当我回显每一列时,似乎也会限制返回 4 列。我想知道是否可以返回的函数有限制?对于我正在尝试做的事情来说,这似乎很麻烦。我只需要一个 SELECT 语句的完整结果集...
标签: php sql-server html web