【问题标题】:SQLSRV 3.0 install - undefined function sqlsrv_connect() IIS, php5.4.3,SQLSRV 3.0 安装 - 未定义函数 sqlsrv_connect() IIS、php5.4.3、
【发布时间】:2013-08-09 14:50:01
【问题描述】:

我已经阅读(并尝试过)我能找到的所有帖子,但没有运气。 phpinfo 不显示 sqlsrv,但 ext 文件夹是正确的(已测试)并且 dll 在那里。

extension=php_pdo.dll //which I don't think is actually needed for this version
extension=php_sqlsrv_53_nts.dll
extension=php_pdo_sqlsrv_53_nts.dll

它们位于 c:/PHP/ext
使用 FastCGI,重启了 IIS 和整个服务器。
此版本的 PHP (X86) 和 MSSQL10_50.SQLEXPRESS 已安装并运行一年。

Windows Server 2008 R2
PHPINFO
编译器:MSVC9 (Visual C++ 2008)
PHP 扩展构建:API20100525,NTS,VC9

但是,在 PHPINFO 上,我在配置命令上看到了这个:

"--without-mssql" "--without-pdo-mssql" 

刚刚找到并添加:

extension=php_sqlsrv_30_53_nts_vc9x86.dll
extension=php_pdo_sqlsrv_30_53_nts_vc9x86.dll 

然后:

extension_dir="C:\PHP\ext" 

所以我知道我已经正确安装了 dll

任何帮助将不胜感激 - 到目前为止这两天!

【问题讨论】:

  • 重新安装 PHP,安装 sqlsrv 并正常工作。但是,它实际上并没有更新数据库,即使它说它会更新。此代码生成“已更新”,但数据库未更新:
  • for ($i=0; $i "XXXX", "UID"=>"xxxxx", "PWD"=>"xxxxx" ); $conn = sqlsrv_connect($serverName, $connectionInfo); if($conn === false) { die( print_r( sqlsrv_errors(), true)); } $sql = "select * from CampaignStats where var0='$campaign_id' and var1='$sent[$i]'"; $stmt = sqlsrv_query($conn, $sql);
  • if( $stmt === false ) { $sql = "INSERT INTO CampaignStats (Var0,Var1,Var2,Var3,Var4,Var5,Var6,Var7) VALUES('$campaign_id',' $sent[$i]','$open[$i]','$blocked[$i]','$bounced[$i]','$spam[$i]','$click[$i ]', '$status[$i]')"; } else { $sql = "UPDATE CampaignStats set Var0='$campaign_id',Var1='$sent[$i]',Var2='$open[$i]', Var3='$blocked[$i]', Var4='$bounced[$i]', Var5='$spam[$i]', Var6='$click[$i]', Var7='$status[$i]' where var0='$campaign_id'和 var1='$sent[$i]'"; }
  • $stmt = sqlsrv_query($conn, $sql); if( $stmt === false ) { echo "未更新
    "; } else { echo "更新
    "; } sqlsrv_close($conn); }

标签: php windows sqlsrv


【解决方案1】:

我最近升级了我的 PHP 和 sqlsrv 驱动程序。这是我为 SQLSRV 部分所做的:

首先,我的 phpinfo() 产生:

PHP Version 5.5.1
System: Windows NT HOSTNAME 6.1 build 7601 (Windows 7 Business Edition Service Pack 1) i586
Build Date: Jul 18 2013 10:37:55 
Compiler: MSVC11 (Visual C++ 2012) 
Architecture: x86 


Configure Command
cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--disable-zts" "--disable-isapi" "--disable-nsapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared" "--with-enchant=shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--disable-static-analyze" "--with-pgo" 

然后我将SQLSRV驱动安装到C:\Program Files (x86)\PHP\ext文件中,并在php.ini中添加:

[PHP_SQLSRV]
extension=php_sqlsrv_53_nts_vc9.dll 
[PHP_PDOSQLSRV]
extension=php_pdo_sqlsrv_53_nts_vc9.dll

它有效。虽然我不直接调用函数(我使用 Yii 框架),但我也更改了 DSN:

sqlsrv:Server=hostname_or_ip;Database=your_database_name;

希望对你有帮助。

编辑

我从http://social.msdn.microsoft.com/Forums/sqlserver/en-US/e1d37219-88a3-46b2-a421-73bfa33fe433/unofficial-php-55-drivers-x86 下载了 PHP 5.5 的实验性/非官方 sqlsrv 驱动程序并将我的配置更新为:

[PHP_SQLSRV]
extension=php_sqlsrv_55_nts.dll 
[PHP_PDOSQLSRV]
extension=php_pdo_sqlsrv_55_nts.dll

发现自:https://stackoverflow.com/a/17390741/2236500

【讨论】:

  • 你在哪里找到 extension=php_sqlsrv_53_nts_vc9.dll ?我在尝试过的任何下载中都找不到。
  • 下载中没有这些文件 - 我需要 php_sqlsrv_53_nts_vc9.dll 和 php_pdo_sqlsrv_53_nts_vc9.dll
  • 找到并尝试了 extension=php_sqlsrv_53_nts_vc9.dll extension=php_pdo_sqlsrv_53_nts_vc9.dll 但仍然是同样的错误 - 仍然没有显示在 phpinfo() 中。
猜你喜欢
  • 1970-01-01
  • 2016-05-30
  • 2017-03-30
  • 2020-07-13
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 2014-03-27
相关资源
最近更新 更多