带有PHP5和MSSQL2012 Express的mssql_connect()


mssql_connect() with PHP5 and MSSQL2012 Express

由于PHP5在Apache上运行,我在尝试连接到MSSQL 2012 Express数据库时遇到了严重问题。作为测试设置,我刚刚安装了一个在Windows7机器上运行的带有PHP 5.4.4和Apache的XAMPP。

我的PHP代码(phpmssql_genxml.PHP):

$connection = mssql_connect('192.168.40.150', $username, $password);
if (!$connection) {  die('Not connected : ' . mssql_get_last_message());} 

$db_selected = mssql_select_db($database, $connection);
if (!$db_selected) {
  die ('Can''t use db : ' . mssql_get_last_message());
} 

$query = "SELECT * FROM Cust WHERE 1";
$result = mssql_query($query);
if (!$result) {  
  die('Invalid query: ' . mssql_get_last_message());
} 

尝试进入站点时的输出:

Fatal error: Call to undefined function mssql_connect() in C:'xampp'htdocs'phpmssql_genxml.php on line 13

即使我尝试将用户名和密码硬编码到字符串中,我仍然会得到相同的结果。我在谷歌上搜索了很多,但还没有找到解决我问题的帖子:/为DB实例管道启用TCP/IP,甚至尝试为其分配一个特定的TCP端口。在Win7防火墙中创建了一个规则,允许所有流量到达标准端口1433。仍然没有运气。

有人有主意吗??"致命错误"部分是什么意思?是Apache错误、PHP错误还是数据库错误??

您的PHP设置中缺少MSSQL驱动程序。从这里下载,假设您拥有页面上提到的所需系统配置。

根据他们的指示设置:

  1. 将SQLRV30.EXE下载到临时目录
  2. 运行SQLRV30.EXE
  3. 出现提示时,输入PHP扩展目录的路径
  4. 提取文件后,请阅读SQLSRV30_Readme.htm文件的"安装"部分以了解下一步操作

如果您计划使用MSSQL,我还建议使用标准的Apache+PHP安装,而不是任何*AMP包。

您不需要使用SQLRV30,因为这不是我需要的解决方案,尽管有些人可能会觉得它很有用。我有一个运行XAMPP+php5.5.9+MSSQL2012的本地开发环境,我需要使用mssql函数,因为这是我们在服务器上使用的函数。所以我使用freetds,"幸运地"找到了这个:

https://moodle.org/mod/forum/discuss.php?d=232844

其中一个用户已经为我的php版本编译了php_dblib.dll TS和NTS,这足以说明我已经完成了所有工作,并使用了我们开发团队习惯的所有MSSQL函数。MSSQL支持的扩展始终可以编译。