使用sqlsrv将php 7.2连接到MS SQL

Dav*_*ves 7 php sql-server sqlsrv php-7.2

我正试图在我的机器上通过PHP连接到MS SQL并运行.我正在运行IIS,安装了PHP 7.2和MS SQL Express 2017.我的基本网页正在运行,但是当我点击打开PHP页面时,连接不起作用.

session_start();

echo "Hello ";
if (isset($_POST['submit'])) {
    $_SESSION["server"] = $_POST['server'];
    $_SESSION["database"]= $_POST['database'];
    $_SESSION["username"] = $_POST['username'];
    $_SESSION["password"] = $_POST['password'];

    echo $_SESSION["database"];

    //CONNECTION
    $serverName = $_SESSION["server"];
    $connectionInfo["Database"] = $_SESSION["database"];
    $connectionInfo["UID"] = $_SESSION["username"];
    $connectionInfo["PWD"] = $_SESSION["password"];

    echo "midway";

    $conn = sqlsrv_connect($serverName, $connectionInfo);

    echo "Bye";
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到"中间的Hello尺寸",这表明页面正在工作,直到它到达连接线.
我不确定要使用哪个sqlsrv扩展名.
我环顾四周,可以看到7和7.1的版本,但不是7.2.

我已经添加extension=php_sqlsrv_71_nts_x86.dll到php.ini的底部(并且文件存在C:\Program Files (x86)\PHP\v7.2\ext).

任何指针都会感激不尽.我花了几天时间在这上面,不要以为我会在任何地方.
谢谢

小智 17

我遇到了同样的问题.后来我发现我使用旧版本的Microsoft SQL文件用于PHP.

对于PHP 7.2,您必须使用7.2版本的MS PHP SQL

该版本无法通过微软网站获得.我在这里找到了https://github.com/Microsoft/msphpsql/releases

一旦我使用这些文件一切正常.我使用64位文件.

然后你需要在php.ini文件中添加这些行

延长= php_sqlsrv_72_nts.dll

延长= php_pdo_sqlsrv_72_nts.dll


Nat*_*ang 9

您需要确定的是

  • 哪个版本的PHP
  • 您使用的运行时是线程安全的还是非线程安全的
  • 您使用的运行时是64位还是32位

然后,您必须在此处查看需求页面

检查你使用的是PHP的版本,所以喜欢你的问题,这是平均到PHP 7.2SQL Server扩展版本5.3是最合适的。

然后转到下载页面,选择您喜欢的特定版本的链接。(这个问题是5.3

您下载的文件将是一个自解压缩的EXE文件,然后解压缩到所需的位置。

您将看到dll类似这些文件的列表...

php_pdo_sqlsrv_7_nts_x64.dll
php_pdo_sqlsrv_7_nts_x86.dll
php_pdo_sqlsrv_7_ts_x64.dll
php_pdo_sqlsrv_7_ts_x86.dll
...
php_sqlsrv_72_ts_x86.dll
Run Code Online (Sandbox Code Playgroud)

这些文件名的含义是什么?

就像我之前说的,您需要确定选择正确的扩展文件。SQL Server扩展名需要2个名称以php_pdo_sqlsrv_xxx和开头的文件php_sqlsrv_xxx

PHP在这种情况下PHP 7.2,下一个数字表示您的版本,因此您需要选择其中包含的文件名_72_

下一个数字表示您的运行时“ 线程安全”或“ 非线程安全”,其特定于文件名_ts_(线程安全)或_nts_(非线程安全)。

下一个数字表示您的运行时32位64位,具体在文件名_x86(32位)或_x64(64位)中

因此,通过检查您的PHP环境phpinfo(),或php --version在控制台上运行命令,然后注意显示的消息,对于我的计算机,它看起来像这些...

PHP 7.2.12 (cli) (built: Nov  8 2018 06:12:12) ( ZTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Run Code Online (Sandbox Code Playgroud)

通过从这些信息看,我得到了PHP 7.2ZTS平均到线程安全的非线程安全NTS),并x8632位

所以,我一定要挑是是扩展php_sqlsrv_72_ts_x86.dllphp_pdo_sqlsrv_72_ts_x86.dll

最终:将它们复制到您的/php/ext文件夹中,并php.ini使用这两个文件名进行编辑。

// example with my case
extension=php_pdo_sqlsrv_72_ts_x86
extension=php_sqlsrv_72_ts_x86
Run Code Online (Sandbox Code Playgroud)

然后保存php.ini文件,然后重新启动服务器。

通过查看phpinfo.php,必须pdo_sqlsrv在页面中测试您的结果。这意味着您的环境可以运行PHP并立即连接SQL Server