我正在尝试使用php在SQL Server中显示行

我正在尝试使用php在SQL Server中显示行,php,sql-server,sql-server-2012,sqlsrv,Php,Sql Server,Sql Server 2012,Sqlsrv,建立连接并运行查询后得到的响应是SQL Server connection类型的resource4 <?php $serverName = "xx.xx.xx.xx"; $uid = "sa"; $pwd = "xxxxxxxxxx"; $databaseName = "courierdb"; $connectionInfo = array( "UID"=>$uid,

建立连接并运行查询后得到的响应是SQL Server connection类型的resource4

<?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); 
?>        

如果没有此SQL Server连接类型的resource4,如何选择数据库中的所有行。非常感谢您的帮助

您可以尝试使用此脚本。没有必要使用sqlsrv_has_行。使用或/来检索数据

<?php
/* Warnings */
sqlsrv_configure("WarningsReturnAsErrors", 1);

/* Connection */
$serverName = "xx.xx.xx.xx";   
$uid = "sa";     
$pwd = "xxxxxxxxxx";    
$databaseName = "courierdb";   
$connectionInfo = array(
    "UID" => $uid,                              
    "PWD" => $pwd,                              
    "Database" => $databaseName
);   
$conn = sqlsrv_connect(
    $serverName, 
    $connectionInfo
);
if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}

/* Execute the query with sqlsrv_fetch_array(). */    
$sql = "SELECT * FROM dbo.AwbDomestics";     
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    //print_r($row, true);
    foreach($row as $field => $value) {
        echo $field.": ".$value." ";
    }
    echo "\n";  
}

/* Execute the query with sqlsrv_fetch()/sqlsrv_get_field(). */    
$sql = "SELECT * FROM dbo.AwbDomestics";     
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
$fc = sqlsrv_num_fields($stmt);
while (sqlsrv_fetch($stmt)) {
    for($i = 0; $i < $fc; $i++) {
        echo sqlsrv_get_field($stmt, $i, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR))." ";
    }
    echo "\n";
}

/* End */
sqlsrv_free_stmt($stmt);  
sqlsrv_close($conn); 
?>
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."; 
    }
}


我仍然得到SQL Server Connection类型的resource4,这是var_dump$conn的预期输出;为什么您认为这是一个问题?我没有从查询返回任何行。我认为这个查询在某个地方失败了,我似乎找不到它。我倒了$row什么也没得到。但是当我var_dump$stmt时,它返回一个资源。表一直都是空行。我不知道这张桌子被截断了。感谢您的帮助,我仍然可以获得SQL Server类型的resource4Connection@JonathanAkweteyOkine是,sqlsrv_connect和sqlsrv_query返回资源或错误时返回false。sqlsrv_fetch_数组返回一个数组,如果没有更多的行可检索,则返回null,错误时返回false。sqlsrv_fetch_数组没有返回任何内容,并且表中有行。当i var_dump$row;没有显示任何内容。奇怪。while之前是否有任何输出?当我var_dump$stmt resource3的类型为SQL Server语句无输出时,我得到了这个结果。
if ($conn == false)
if (!$stmt)