如何使用 PHP 显示 SQL 服务器 table 数据?
How do I display SQL Server table data using PHP?
我想开始显示我使用 PHP 使用的 sql 服务器数据库中的一些数据。我相信我与数据库的连接正常,但我无法从 Facility table 获取任何数据以显示在浏览器中。我一直在使用 Apache 服务器,从 XAMPP 到 运行 PHP(PHP 8.0 版)。 SQL 服务器(2012 版)在建筑物中的另一台机器上。到目前为止我有:
- 下载了名为“php_sqlsrv_80ts.dll”和“php_sqlsrv_80_ts.dll”的 sqlsrv 扩展文件。两者都在我的 XAMPP php.ini 文件中作为新扩展名(见下文)
- 添加两个新扩展后重新启动我的 Apache 和 MySQL 服务器。
- 测试了我的连接并尝试使用以下代码显示一些结果:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MSSQL Connection Test</title>
</head>
<body>
<?php
$serverName = "###"; //serverName\instanceName
$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);
$resultCheck = sqlsrv_num_rows($result);
if ($resultCheck > 0) {
while ($row = sqlsrv_fetch_assoc($result)) {
echo $row['Operator'] . "<br>";
}
}
?>
</body>
</html>
当我在浏览器中访问文件时,我收到这条消息,“已建立连接”。我在控制台中看不到任何内容。如果没有任何错误消息,很难判断出了什么问题。理想情况下,我想显示我数据库中任何 table 的内容,看看是否正常。
查看@cottton 发布的两个链接后,我能够从数据库中查询一些数据。我发现我的代码有几个问题:
- 当我在 SQL 查询中使用
*
时,它似乎不喜欢。如果我指定要查看的列并告诉它回显 table 中的第一行,就像这样,SELECT Operator FROM Facility
,它工作正常。当我说 SELECT * FROM Facility
并在 echo 语句中指定列时,它给我这个错误:
“警告:第 58 行 C:\Users###\Documents\GitHub_Repos\Utah_OG_Website\MSSQLQueryTest.php 中未定义的数组键“运算符”。
- 我需要在 while 语句中使用
sqlsrv_fetch_array
和 SQLSRV_FETCH_NUMERIC
。注意 - 它只接受大写 SQLSRV_FETCH_NUMERIC
与 sqlsrv_fetch_numeric
.
- 如果我使用
if ($resultCheck > 0) {}
它不会显示任何结果。我假设它与返回的数据类型有关,但还不完全确定。
这是用于比较的工作代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MSSQL Connection Test</title>
</head>
<body>
<?php
$serverName = "###"; //serverName\instanceName
$connectionInfo = array( "Database"=>"###", "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 Operator FROM Facility;";
$result = sqlsrv_query($conn, $query);
$resultCheck = sqlsrv_num_rows($result);
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_NUMERIC)) {
echo $row[0] . "<br>";
}
?>
</body>
</html>
我想开始显示我使用 PHP 使用的 sql 服务器数据库中的一些数据。我相信我与数据库的连接正常,但我无法从 Facility table 获取任何数据以显示在浏览器中。我一直在使用 Apache 服务器,从 XAMPP 到 运行 PHP(PHP 8.0 版)。 SQL 服务器(2012 版)在建筑物中的另一台机器上。到目前为止我有:
- 下载了名为“php_sqlsrv_80ts.dll”和“php_sqlsrv_80_ts.dll”的 sqlsrv 扩展文件。两者都在我的 XAMPP php.ini 文件中作为新扩展名(见下文)
- 添加两个新扩展后重新启动我的 Apache 和 MySQL 服务器。
- 测试了我的连接并尝试使用以下代码显示一些结果:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MSSQL Connection Test</title>
</head>
<body>
<?php
$serverName = "###"; //serverName\instanceName
$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);
$resultCheck = sqlsrv_num_rows($result);
if ($resultCheck > 0) {
while ($row = sqlsrv_fetch_assoc($result)) {
echo $row['Operator'] . "<br>";
}
}
?>
</body>
</html>
当我在浏览器中访问文件时,我收到这条消息,“已建立连接”。我在控制台中看不到任何内容。如果没有任何错误消息,很难判断出了什么问题。理想情况下,我想显示我数据库中任何 table 的内容,看看是否正常。
查看@cottton 发布的两个链接后,我能够从数据库中查询一些数据。我发现我的代码有几个问题:
- 当我在 SQL 查询中使用
*
时,它似乎不喜欢。如果我指定要查看的列并告诉它回显 table 中的第一行,就像这样,SELECT Operator FROM Facility
,它工作正常。当我说SELECT * FROM Facility
并在 echo 语句中指定列时,它给我这个错误:
“警告:第 58 行 C:\Users###\Documents\GitHub_Repos\Utah_OG_Website\MSSQLQueryTest.php 中未定义的数组键“运算符”。
- 我需要在 while 语句中使用
sqlsrv_fetch_array
和SQLSRV_FETCH_NUMERIC
。注意 - 它只接受大写SQLSRV_FETCH_NUMERIC
与sqlsrv_fetch_numeric
. - 如果我使用
if ($resultCheck > 0) {}
它不会显示任何结果。我假设它与返回的数据类型有关,但还不完全确定。
这是用于比较的工作代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MSSQL Connection Test</title>
</head>
<body>
<?php
$serverName = "###"; //serverName\instanceName
$connectionInfo = array( "Database"=>"###", "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 Operator FROM Facility;";
$result = sqlsrv_query($conn, $query);
$resultCheck = sqlsrv_num_rows($result);
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_NUMERIC)) {
echo $row[0] . "<br>";
}
?>
</body>
</html>