由于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驱动程序。从这里下载,假设您拥有页面上提到的所需系统配置。
根据他们的指示设置:
- 将SQLRV30.EXE下载到临时目录
- 运行SQLRV30.EXE
- 出现提示时,输入PHP扩展目录的路径
- 提取文件后,请阅读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支持的扩展始终可以编译。