从php网页访问MSSQL数据库表

时间:2019-04-11 08:25:19

标签: php sql-server

我正在尝试创建一个php文件来访问桌面中的mssql数据库并在此网页中显示数据。 Web服务器正在运行linux。 我可以使用sql或Windows身份验证访问mssql数据库,从公共IP到SQL managemnet studio都没有问题。但是无法显示我的页面中的任何数据。端口已打开,并且服务器已配置为可以进行远程访问。

我的问题是,我必须在PC上安装php和microsoft驱动程序才能使其工作吗? 我的PC使用Vista 32运行,我使用Microsoft SQL Server 2008作为数据库。 谢谢。

我的代码是...

 <?php

$connectionInfo = array( "UID" => "user", "PWD" => "123456", "Database"  => "TestDB" );
$link = sqlsrv_connect( "111.222.333.444", $connectionInfo );
if( $link ) {
 echo "Connection established.<br />";
} else{
 echo "Connection could not be established.<br />";
 die( print_r( sqlsrv_errors(), true ) );
}
$sql = "SELECT *  FROM table";

$stmt = sqlsrv_query( $link, $sql );
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) {
echo $row['value']."<br />";
}

if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
 ?>

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,答案是

用于SQL Server的PHP和PHP驱动程序应安装在运行WEB服务器的此计算机上。在您的情况下,这是Linux计算机。如果所有组件均已正确安装和配置,则您应该能够连接到在Vista计算机上运行的SQL Server实例。当然,您应该能够连接到允许远程访问的任何SQL Server实例。

您需要基于support matrix选择用于SQL Server的正确PHP驱动程序版本,然后按照安装步骤进行操作。

您的PHP代码是正确的,但是最好在每次执行sqlsrv_函数之后检查错误:

<?php
# Connection info
$connectionInfo = array(
    "UID" => "user", 
    "PWD" => "123456", 
    "Database"  => "TestDB"
);

# Connection
$link = sqlsrv_connect("111.222.333.444", $connectionInfo);
if ($link === false) {
    echo "Connection could not be established.<br />";
    die( print_r( sqlsrv_errors(), true ) );
} else {
    echo "Connection established.<br />";
}

# Statement
$sql = "SELECT * FROM table";
$stmt = sqlsrv_query($link, $sql);
if ($stmt === false) {  
    echo "Error executing query.<br />";
    die( print_r( sqlsrv_errors(), true));
}

# Fetch data
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    echo $row['value']."<br />";
}

# End
sqlsrv_free_stmt($stmt);
sqlsrv_close($link);
?>

更新: 使用ODBC的示例:

<?php
$server   = "111.222.333.444";
$user     = "user";
$password = "123456";
$database = "testDB";
$conn_string = 'Driver={SQL Server Native Client 11.0};Server='.$server.';Database='.$database.';client_charset=UTF-8;';
if ($conn = odbc_connect($conn_string, $user, $password)) {
    $sql = "SELECT * FROM table";

    $result = odbc_exec($conn, $sql);
    while (odbc_fetch_row($result)) {
        $value = odbc_result($result, "value");
        echo $value.'</br>';
    }
}
?>

答案 1 :(得分:0)

Finally i made it to work with following code...

  <?php
 $server   = "192.168.1.111,50052"; // DB SERVER IP AND PORT
$user     = "XXXXXX";
 $password = "YYYYYY";
$database = "MYdb";
   $conn = 'Driver={SQL Server Native Client 11.0};Server='.$server.';                   Database='.$database.';client_charset=UTF-8;';

 $today = date("Y-m-d"); 

 if ($conn = odbc_connect($conn, $user, $password)) {
$sql = "SELECT * FROM MTRL WHERE MY_TABLE >= '$today'";

  $result = odbc_exec($conn, $sql);
 while (odbc_fetch_row($result)) {

    $product_id = odbc_result($result, "ID");
    $name = odbc_result($result, "NAME");
    $dateModified = odbc_result($result, "INSERTDATE");
    echo $id . " - " . $product_id. " - " . $name . " - " . $dateModified .     '</br>';

   }
}

 ?>