宝塔php7.3 pdo_sqlsrv连接MSSQL

享目的环境是这样:
thinkphp5.1框架连接MSSQL数据库,在之前就已经安装好了ODBC驱动,所以在thinkphp配置文件里一直使用pdo_odbc方式来连接数据库,一切正常.在database.php里的配置:

'type' => 'sqlsrv',
'dsn'  => 'odbc:Driver={ODBC Driver 17 for SQL Server};Server=127.0.0.1,1433;Database=Account',

这里DSN可以看出用的ODBC驱动连接数据库.

今天写代码的时候出现个问题..在数据库插入的时候用了insertGetId来获取插入的自增主键ID.出现错误提示:

SQLSTATE[IM001]: Driver does not support this function: driver does not support lastInsertId()

这里主要是因为odbc方式不支持getLastInsID()来获取自增主键.

最后还是给php安装pdo_sqlsrv来使用解决了问题.
记录下pdo_sqlsrv安装过程.
这里查询PHP官网提示php5.3以后就丢弃了pdo_sqlsrv扩展,然后微软官网的安装教程地址是:Microsoft Drivers for PHP for SQL Server 的 Linux 和 macOS 安装教程

这里根据安装教程我直接Github上下载的二进制文件CentOS7-7.3.tar
然后把解压出来的php_sqlsrv_73_nts.so和php_pdo_sqlsrv_73_nts.so放到php的扩展文件夹里
可以通过命令php -i | grep extension_dir 来查找php的扩展路劲.
修改php.ini的配置文件,添加这2个扩展文件

extension=扩展路劲/php_sqlsrv_73_nts.so 
extension=扩展路劲/php_pdo_sqlsrv_73_nts.so

重启PHP,然后查看phpinfo()
pdo.JPG
最后database.php配置文件里去掉dsn配置信息,这样就成功使用pdo_sqlsrv驱动mssql数据库.

标签: none

添加新评论