-2

之前在 Silverlight 中开发应用程序后,我们现在正在转向 HTML5。作为向更开放源代码方法迈进的一部分,我正在考虑使用 PHP 链接到我们的 MSSQL 数据库而不是 .NET。有什么好的理由不采取这种方法吗?(我们必须保留 MSSQL 和 Windows)

4

2 回答 2

1

根据PHP.Net的说法,有很多函数可以处理 MSSQL 数据库。

无论如何,您应该首先加载驱动程序,因为MICROSOFT官方 SQL Server 站点

您可以在 Microsoft 下载中心下载 SQL Server 2005 Driver for PHP。下载中包含两个 .dll 文件:php_sqlsrv.dll 和 php_sqlsrv_ts.dll。为 PHP 加载 SQL Server 2005 驱动程序类似于加载任何 PHP 扩展!

  1. 将扩展文件(php_sqlsrv.dll 或 php_sqlsrv_ts.dll)放在 PHP 扩展目录中。
  2. 修改 php.ini 文件以包含扩展名。根据您要加载的驱动程序版本(非线程安全或线程安全),您需要将以下行之一添加到 php.ini 文件的动态扩展部分:

    扩展=php_sqlsrv.dll

    扩展=php_sqlsrv_ts.dll

  3. 重新启动 Web 服务器。

  4. 享受 API

在完成一切之后,您必须为 PHP配置SQL Server 2005+ 驱动程序具有三个配置选项:

  • LogSubsystems 使用此选项可以打开或关闭子系统的日志记录。默认设置为 SQLSRV_LOG_SYSTEM_OFF(默认情况下关闭日志记录)。
  • LogSeverity 使用此选项可指定打开日志记录后要记录的内容。默认设置为 SQLSRV_LOG_SEVERITY_ERROR(在打开日志记录后,默认情况下只记录错误)。
  • WarningsReturnAsErrors默认情况下,Driver for PHP 将 sqlsrv 函数生成的警告视为错误。使用 WarningsReturnAsErrors 选项来更改此行为。此选项的默认设置为 true。

注意 此规则有例外。例如,通过更改数据库上下文生成的警告永远不会被视为错误。

最后,您必须记住最后几件事,*sqlsrv_connect* 函数用于建立与服务器的连接。

$serverName = "(local)";
$connectionOptions = array("Database"=>"myDatabase");
/* Connect using Windows Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionOptions);
if( $conn === false )
      { die( FormatErrors( sqlsrv_errors() ) ); }

默认情况下,sqlsrv_connect 函数使用Windows 身份验证来建立连接。在大多数情况下,这意味着 Web 服务器的进程标识或线程标识(如果 Web 服务器使用模拟)用于连接到服务器,而不是最终用户的标识。

sqlsrv_connect 函数接受两个参数:$serverName 和 $connectionOptions(可选)。

  • $serverName此必需参数用于指定要连接的服务器的名称。在上面的代码中,建立了与本地服务器的连接。此参数还可用于指定 SQL Server 实例或端口号。例如:

    $serverName = "myServer\instanceName";

-或者-

$serverName = "myServer, 1521";
  • $connectionOptions这个可选参数是一个键值对数组,用于设置连接选项。有关
    详细信息,请参阅产品文档中的 sqlsrv_connect。

注意 必须在 $connectionOptions 参数中设置 UID 和 PWD 选项才能使用 SQL Server 身份验证登录到服务器。

注意 示例中显示的 FormatErrors 函数是用于格式化错误输出的自定义函数。

于 2013-02-01T18:16:38.293 回答
0

近 2 年来,我一直在高可用性生产环境中使用 php(在 Windows Server 2003 和 2008 上的 IIS 上运行)和 Microsoft SQL Server(2008 和 2008R2)。

从 php 到 SQL server 的驱动一开始有点不稳定,但只要你得到最新的驱动,它就非常健壮。

在我的环境中,PHP 和 SQL Server 组合的性能优于 .net 实现。

于 2013-02-01T19:56:46.800 回答