You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP展示SQL Server数据库表中的数据

问题原因

  • 调用了不存在的方法:sqlsrv扩展没有sqlsrv_fetch_assoc()函数,取关联数组需要用sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)
  • 行数统计逻辑无效:sqlsrv_num_rows()默认仅支持可滚动游标返回的结果集,默认查询用的前向游标调用该方法只会返回false,判断逻辑永远不成立
  • 缺少查询执行错误校验:sqlsrv_query()执行失败不会直接抛出错误,没有校验该步骤的返回值,无法定位查询语法、权限、表不存在等问题

修复方案

替换原有PHP代码段为如下内容即可,同时支持任意表查询测试,只需修改$query变量中的SQL语句:

<?php
$serverName = "###"; // 填写实际的服务器地址\实例名,比如192.168.1.100\SQLEXPRESS
$connectionInfo = array( "Database"=>"UTRBDMSNET", "UID"=>"###", "PWD"=>"###");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}

$query = "SELECT * FROM Facility;";
// 执行查询并增加错误判断
$result = sqlsrv_query($conn, $query);
if ($result === false) {
    die("查询执行失败:".print_r(sqlsrv_errors(), true));
}

// 直接循环遍历结果集,不需要提前统计行数
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
    // 输出整行数据方便调试,也可以单独取指定字段
    print_r($row);
    echo "<br>";
    // 如果要取Operator字段可以用 $row['Operator'],注意字段名大小写和数据库一致
}

// 释放资源关闭连接
sqlsrv_free_stmt($result);
sqlsrv_close($conn);
?>

额外校验项

  • 确认数据库账号对Facility表有SELECT查询权限
  • 确认表名、字段名拼写正确,SQL Server对大小写敏感的实例会区分大小写
  • 如果还是无数据输出,可以先在SQL Server客户端执行SELECT count(*) FROM Facility确认该表确实有数据

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:15:00