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
您需要确定的是
然后,您必须在此处查看需求页面
检查你使用的是PHP的版本,所以喜欢你的问题,这是平均到PHP 7.2
其SQL 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.2
,ZTS
平均到线程安全的(非线程安全会NTS
),并x86
为32位。
所以,我一定要挑是是扩展php_sqlsrv_72_ts_x86.dll
和php_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
。