将Ubuntu 16.04连接到MSSQL的问题

时间:2017-06-26 22:31:19

标签: php sql-server pdo

我正在尝试使用Ubuntu16.04(LAMP堆栈)服务器和PHP 7.0连接到MSSQL数据库

到目前为止,当我尝试使用以下演示脚本时,我可以连接:

<?php
$conn = mssql_connect("BWSQL", "<usrname>", "<password>");
mssql_select_db( "infobase", $conn );
$query_result = mssql_query( "SELECT * FROM dbo.Staff", $conn );
echo "The field number one is: ";
echo mssql_result ($query_result, 0, 0);
mssql_close($conn); // close connection
?>

我收到了 致命错误:未捕获错误:在/var/www/html/test2.php:2中调用未定义的函数mssql_connect()堆栈跟踪:#var {www}在/var/www/html/test2.php中抛出第2行

我已经测试了

php -v

并且看不到任何错误。命令行测试

tsql -S BWSQL -U <usrname> -P <password> -D myData

导致连接,我可以调用表。

我正在尝试使用sqlsrv / pdo_sqlsrv模块。 freetds模块,我现在可以得到的任何东西,因为这是一个测试服务器。我甚至尝试在html标签中包装所有内容。如果您需要我的任何信息,请告诉我。

提前致谢。

2 个答案:

答案 0 :(得分:4)

mssql_*系列函数已被弃用了很长时间and were finally removed in PHP 7.0

您可以按照其他答案中的建议切换到使用PDO,或使用sqlsrv_*功能:

<?php
$params = [
    "UID" => "<usrname>",
    "PWD" => "<password>",
    "Database" => "infobase",
];
$conn = sqlsrv_connect("BWSQL", $params);
$query_result = sqlsrv_query($conn, "SELECT * FROM dbo.Staff");
$row = sqlsrv_fetch_array($query_result);
echo "The field number one is: $row[0]";
sqlsrv_close($conn); // close connection

答案 1 :(得分:2)

尝试使用PDO而不是mssql

$host = "BWSQL"; //azure
$db = "infobase";
$user "<username>";
$pass = "<password>";    
try {
    $pdo = new PDO("sqlsrv:server=$host;Database=$db", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} 
catch (PDOException $e) 
{
    print("Error connecting to SQL Server.");
    die(print_r($e));
}
$sql = "SELECT * FROM dbo.Staff";
$qry = $pdo->prepare($sql);
$qry->execute();
$result = $qry->fetchColumn(0);
echo "The field number one is: $result";
相关问题