Windows 7环境下如何用Zend Framework 3连接MSSQL数据库?
在Zend Framework 3中连接MSSQL数据库
既然你已经通过原生PHP的sqlsrv扩展成功连通了MSSQL,那在ZF3里配置其实非常顺畅,我给你一步步拆解操作:
1. 配置数据库连接参数
首先找到ZF3项目的本地配置文件config/autoload/local.php(这个文件专门存本地敏感配置,不会提交到版本库),把你的MSSQL连接信息填进去:
return [ 'db' => [ 'driver' => 'Pdo', 'dsn' => 'sqlsrv:Server=USER-PC\MYINSTANCE;Database=MYSamples', 'username' => 'MYRawData', 'password' => '123456', 'driver_options' => [ // 可选:添加sqlsrv额外配置,比如指定字符集 // PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8, ], ], ];
这里要注意:
driver填Pdo即可,ZF3的Pdo适配器原生支持sqlsrv驱动dsn格式要严格对应sqlsrv的PDO规范,直接复用你原生代码里的服务器实例、数据库名就行
2. 在控制器中使用数据库适配器
ZF3骨架项目默认已经集成了Zend\Db模块,上面的配置会自动注册Zend\Db\Adapter\Adapter服务,你可以通过依赖注入直接在控制器里调用:
use Zend\Db\Adapter\AdapterInterface; use Zend\Mvc\Controller\AbstractActionController; class IndexController extends AbstractActionController { protected $dbAdapter; // 通过构造函数注入适配器(推荐的依赖注入方式) public function __construct(AdapterInterface $dbAdapter) { $this->dbAdapter = $dbAdapter; } public function indexAction() { // 测试连接是否成功 try { $connection = $this->dbAdapter->getDriver()->getConnection(); $connection->connect(); echo "ZF3中MSSQL连接成功!"; $connection->disconnect(); } catch (\Exception $e) { echo "连接失败:" . $e->getMessage(); } return []; } }
如果暂时不想用构造注入,也可以通过服务管理器直接获取适配器:
$dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
3. 常见问题排查
如果遇到连接失败,先检查这几点:
- 确认
sqlsrv扩展在ZF3使用的PHP环境中已经启用(可以通过phpinfo()查看) - 核对
local.php里的参数和你原生PHP代码的完全一致(服务器实例名、数据库名、账号密码) - 确保Web服务器进程有访问MSSQL实例的权限
小提示:如果你的MSSQL实例用了非默认端口(比如1433),可以在DSN里追加
;Port=你的端口号
内容的提问来源于stack exchange,提问作者Kushal
相关产品推荐
相关产品推荐

