我正在尝试创建一个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));
}
?>
答案 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>';
}
}
?>