首页 > 解决方案 > 我正在尝试使用 php 在 SQL Server 中显示行

问题描述

建立连接并运行查询后我得到的响应是“类型的资源(4)(SQL Server 连接)”

<?php    
$serverName = "xx.xx.xx.xx";   
$uid = "sa";     
$pwd = "xxxxxxxxxx";    
$databaseName = "courierdb";   

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

/* Connect using SQL Server Authentication. */  

$conn = sqlsrv_connect( $serverName, $connectionInfo);

var_dump($conn);


/* Execute the query. */    
$sql = "SELECT * FROM dbo.AwbDomestics";     
$stmt = sqlsrv_query( $conn, $sql);
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC))
{
    if (sqlsrv_has_rows($stmt)) {

        echo "row:<br>"; var_dump($row); echo "<br><br>";

    }
    else {
        echo "<br/>No Results were found."; 
    }

}

sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn); 
?>        

如果没有这种类型的“资源(4)(SQL Server 连接),我如何选择数据库中的所有行。非常感谢任何帮助。

标签: phpsql-serversql-server-2012sqlsrv

解决方案


if (sqlsrv_has_rows($stmt))测试应该围绕循环,而不是在循环内部。

if (sqlsrv_has_rows($stmt)) {
    while ($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC))
    {
        echo "row:<br>"; var_dump($row); echo "<br><br>";
    }
    else {
        echo "<br/>No Results were found."; 
    }
}

要检查查询中的错误,您应该检查 if $stmtis FALSE, not $conn。所以改变

if ($conn == false)

if (!$stmt)

推荐阅读