我一直在尝试在PHP脚本和Microsoft Azure SQL数据库之间建立连接,但仍然遇到同样的问题。我已经尝试了Xampp version 7.1.11 / PHP 7.1.11, 7.0.25 / PHP 7.0.25
,现在我正在使用5.6.32 / PHP 5.6.32。
我已经安装了Microsoft Drivers for PHP for Microsoft SQL Server,并使用了SQLSRV32.EXE
版本5.6.32,该版本已添加到C:\xampp\php\ext
文件夹中。
当我编辑php.ini
文件以在php错误日志文件中添加extension=php_sqlsrv_56_nts.dll
保存并重新启动apache时,我一直收到错误
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_sqlsrv_56_nts.dll' - The specified module could not be found. in Unknown on line 0
我尝试过的每个版本的XAMPP都是这样做的。任何人都可以提供一个想法或一手可以解决这个问题,并使用PHP完成我的SQL连接到Azure SQL数据库吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
因此,经过进一步的修补和研究,我终于解决了上面提到的问题。不幸的是,常见的谷歌搜索提供了这个Microsoft Drivers for PHP for SQL Server,它只包含PHP版本7.0.XX以前的驱动程序。对于PHP Version 7.1.12
,我已使用此处Microsoft Drivers 4.3 for PHP for SQL Server中的thread safe1
php_sqlsrv_71_ts_x64.dll
。我不知道为什么再花三天时间才找到这个。
现在可以使用与Azure SQL数据库的连接,步骤如下所述。
1.从Microsoft获取正确的SQL驱动程序
- 如果您使用的是PHP 7.0或更早版本,则可以找到驱动程序Here
- 如果您使用的是PHP版本7.1,则可以找到驱动程序Here
2.安装Microsoft ODBC Driver 13 for SQL Server
3.将所需的.dll's
安装到php\ext
文件夹。 eg. C:\php\ext
4.编辑php.ini
文件,确保extension_dir=
指向您放置下载的C:\php\ext
(驱动程序)的.dll's
文件夹。
5.将extension=required .dll name
添加到大约890行的php.ini文件中。在我的情况下,这是extension=php_sqlsrv_71_ts_x64.dll
6.保存php.ini
并重新启动Apache
。
我用来测试我的连接的PHP脚本如下:
sqltest.php
$connectionInfo = array("UID" => "USERNAME", "pwd" => "PASSWORD", "Database" => "DBNAME", "LoginTimeout" => 30, "Encrypt" => 1, "TrustServerCertificate" => 0);
$serverName = "SERVERNAME";
$conn = sqlsrv_connect($serverName, $connectionInfo);
if (sqlsrv_errors($conn)) {
die('Failed to connect to Azure SQL: '.sqlsrv_errors());
} else {
echo "Connection to Microsoft Azure SQL Server has succeeded! <br /><br />";
}
$tsql = "SELECT * FROM [Users];";
$getResults = sqlsrv_query($conn, $tsql);
echo ("Reading data from table <br />" . PHP_EOL);
if ($getResults == FALSE)
echo(sqlsrv_errors());
while ($row = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC)) {
echo ($row['Id'] . " " . $row['Name'] . " " . $row['Username'] . " " . $row['Password'] . "<br /> " . PHP_EOL);
}
sqlsrv_free_stmt($getResults);
?>
更多信息由Microsoft Here
提供再次感谢上述所有人提供的有用帮助。