关于PHP连接SQL Server

配置PHP与SQL Server的连接:

原本计划在NIIT课上将PHP与SQL Server的连接问题解决,但是忙活了两节课,收效甚微。查阅了大量的资料,也采用了多种方式,仍然没能将两者连接起来。报的错误也是非常让人头痛 “XXX方法不存在”。

先后采取的方法:

1. php_mssql.dll:
  • 通过修改php.ini,将 extension=php_mssql.dll 前面的分号删除。
  • 将mssql_secure_connection=Off改为On,
  • 重启Apache。

结果仍然报错,mssql_connect()方法不存在。我按照另外一个博客主所写的博文,找到php的ext文件夹,结果却发现该文件夹内没有php_mssql.dll文件以及ntwdblib.dll文件。

配置php:

  • a、打开php.in将extension=php_mssql.dll的注释符号去掉。
  • b、打开php.in将mssql.secure_connection = Off改为on。
  • c、将php_mssql.dll拷贝到php.in中extension_dir 指定的目录或者系统system32目录下。 (php_mssql.dll在php的压缩安装包中有)。
  • 以上步骤完成后需要重启apache。
    注意:实际使用中发现 如果通过php压缩文件手工安装php到iis下,必须重启机器而不仅仅是iis。

当我将这两文件都下载并放置到指定文件夹后,仍然报相同的错。此外,又有其他的教程,将php_mssql.dll 和 ntwdblib.dll 文件放置到系统盘的System32文件夹内。虽然我不认为这么做能解决该问题,但我还是照做了,结果仍然是报错。

2. sqlsrv:

后来终于找到一份不错的教程,并且根据该教程终于成功地让xampp集成中的php扩展了sqlsrv。特附上链接 php如何连接sql server

  1. 先到微软网站下载 SQL Server Driver for PHP(在这一步,我犯了一个错,没有导入与PHP版本相对应的扩展文件),获得一个自解压文件,解压缩后得到如下几个文件(截图上网找的,版本有些落后):


    关于PHP连接SQL Server_第1张图片
    解压后的内容
    • 扩展文件的 数字 代表与之对应的PHP版本,例如php_sqlsrv_52_nts_vc6.dll对应于php5.2。
    • 扩展文件的 nts 标识代表对应PHP版本是非线程安全。
    • 扩展文件的 ts 标识代表对应PHP版本是线程安全。

    因为没有导入匹配的扩展文件,所以导致我仍然没能在php中成功扩展 php_sqlsrv

  2. 将扩展文件拷贝到php/ext目录下(目前下载的扩展文件是一个exe文件,能够自动安装,只要你指定安装路径为php/ext,安装结束后就会自动拷贝到php/ext目录下)。

  3. 在php.ini文件,添加以下代码:

    • extension=php_sqlsrv_56_ts.dll(在ext目录的pdo扩展)
    • extension=php_pdo_sqlsrv_56_ts.dll(在ext目录的扩展)
  4. 重启Apache,打开phpInfo();如果能够看到:

    关于PHP连接SQL Server_第2张图片
    phpinfo() - sqlsrv

    那么代表你已经成功地扩展了sqlsrv。

  5. 微软官网下载 MicroSoft ODBC SQL Server 11 Driver(具体名字,我也忘了),最后会得到一个msodbcsql.msi的文件,双击安装即可。但需要注意,下载和电脑相同类型的文件,如果你的电脑是32位,那么就下x86后缀的文件;如果是64位,就下载X64后缀的文件。

  6. 以上就是PHP配置的所有内容,如果仍然无法和SQL Server连接,那么你需要检查下SQL Server的配置以及你请求的路径、数据库名称、账号与密码是否有误。

后续总结:

关于SQL Server的配置,在此我就不多说了,网络上都有相关的资料,并且非常容易找到。不过我还是说一点:当我已经成功扩展sqlsrv,却还是无法连接到数据库时(其实是我没有写好数据库连接的信息......),一些资料让我去下载Microsoft SQL Native Client,然而通常情况下,安装SQL Server的时候是会自动安装MSNC,因此我觉得造成连接不到数据库的原因不是MSNC。

附:sqlstate 08001的处理方式

为了免去大家找寻资料麻烦,我已经将上述所需的安装包上传到百度云盘,大家可以直接去下载。

附:传送门

你可能感兴趣的:(关于PHP连接SQL Server)