如何使用PHP7使mssql_connect工作?

7

在将一个Web应用程序移植到使用PHP7的服务器时,我遇到了一个问题:我无法让mssql_connect正常工作。我发现mssql在PHP7上尚未工作(或永远不会工作)。

在Ubuntu(Nginx,php-fpm)上,连接到MSSQL的最快方法是什么?


2
PDO连接怎么样? - Matteo Tassinari
4
php手册:此函数在PHP 7.0.0中已被删除。替代此函数的方法包括: PDO::__construct() sqlsrv_connect() odbc_connect() - Ferrybig
有人确认了上述解决方案吗? - George Mastro
我有同样的困境。PDO与存储过程不兼容。我更喜欢使用PDO。想要升级到PHP 7,但这是个大问题。我猜我得尝试让dblib与存储过程兼容。 - Daryl B
1
也许你会让我RTCA[阅读上面的评论],但有没有人想到如何保留PHP7.0,并使用旧代码与mssql_connect、mssql_query和mssql_fetch_array? - dcparham
2个回答

7
连接函数不再是mssql_connect()了。自从php 5.3版本以来,它已经被弃用了。现在在php 7中,这个旧函数消失了。但是不用担心 ;) 现在你可以使用sqlsrv_connect()函数代替它。
请记住,在新方法中,您需要正确设置参数。有一些差异。下面是一个小例子。
<?php
$serverName = "serverName\sqlexpress, 1542"; //serverName\instanceName, portNumber (1433 by default)
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Successfuly connected.<br />";
}else{
     echo "Connection error.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

也许这个答案对你来说有些晚了,但我希望对其他人来说不会太晚。

为什么要使用 sqlsrv_connect?而不是 pdomysqli - Michal
sqlsrv_connect仅适用于Windows操作系统。他询问关于在Ubuntu上使用PHP7连接MSSQL(Nginx,php-fpm)的问题。 - Digital Human
sqlsrv_connect目前在我的环境下运行正常- Ubuntu 16.04.1,PHP版本为7.0.30-0,已安装freeTDS和msSQL ODBC“sqlsrv”。 SQL服务器版本是Microsoft SQL Server 2008 R2(RTM)-10.50.1600.1(X64)。 - dcparham
只有安装了ODBC驱动程序,sqlsrv才能正常工作,那么为什么不直接使用FreeTDS ODBC呢? - NiKiZe

0

1. 运行sudo apt-get update安装php-sybase

2.

$dsn= 'dblib:host=youIP:1433;dbname=XXX;';
$dbusername="sa";
$dbpassword="XXXX";
try
{
    $mspdo = new PDO($dsn,$dbusername,$dbpassword);
    $mspdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $pe)
{
    die("database connect error:". $pe->getMessage());
}

PHP7 不支持 Sybase。 - Digital Human

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接