CodeIgniter数据库连接DSN字符串怎么写

云瑶酱_6728

云瑶酱_6728

2026-10-25

313人浏览

原创

codeigniter 不支持标准 dsn 字符串连接数据库,而是采用配置数组方式定义连接参数;从 2.x 到 4.x 均将主机、用户名、密码等拆分为独立键值,dsn 字段仅在 ci3 中作为 pdo 备用选项存在且极少使用。

codeigniter数据库连接dsn字符串怎么写

CodeIgniter 不直接使用标准 DSN(Data Source Name)字符串连接数据库,而是通过配置数组方式定义连接参数。从 CodeIgniter 2.x 到 4.x,均不支持类似 mysql://user:pass@host:port/dbname 这样的传统 DSN 格式。

CI 3.x 和 4.x 都用配置数组,不是 DSN 字符串

CodeIgniter 的数据库配置是 PHP 数组,写在 app/Config/Database.php(CI4)或 application/config/database.php(CI3)中。它把主机、用户名、密码等拆成独立键值,而非拼成一个 DSN 字符串。

  • CI3 示例(MySQL):
$db['default'] = array(
    'dsn'   => '', // 这里留空!CI3 中 dsn 键存在但通常不启用
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '123456',
    'database' => 'myapp',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);
  • CI4 示例(更简洁,无 dsn 字段):
public $default = [
    'DSN'      => '', // CI4 中这个字段可留空或忽略
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '123456',
    'database' => 'myapp',
    'DBDriver' => 'MySQLi',
    'DBPrefix' => '',
    'pConnect' => false,
    'DBDebug'  => (ENVIRONMENT !== 'production'),
    'charset'  => 'utf8',
    'DBCollat' => 'utf8_general_ci',
    'swapPre'  => '',
    'encrypt'  => false,
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 3306,
];

CI3 中的 dsn 键只是备用选项,极少使用

CI3 文档提到,若设置了非空 'dsn' 字符串且 'hostname' 为空,框架会尝试用 PDO 方式解析该 DSN。但这要求开启 PDO 扩展,并且只适用于部分驱动(如 pdo),不适用于默认的 mysqli 或 mysql。

DrugBank 数据库
DrugBank 数据库

访问并分析来自 DrugBank 数据库的全面药物信息,包括药物属性、相互作用、靶点、通路、化学结构和药理学数据。用于药物数据、药物发现研究、药理学研究、药物-

下载
  • 例如用 PDO + MySQL 时可写:
'dsn' => 'mysql:host=localhost;dbname=myapp;charset=utf8mb4'
  • 但必须同时设置:'dbdriver' => 'pdo',并确保 'hostname' 留空或注释掉
  • 实际项目中几乎不用这种方式,因为失去 CI 原生驱动的查询构建器优化和调试支持

为什么 CodeIgniter 不主推 DSN?

CI 的设计目标是轻量、可控、易调试。把连接参数显式拆开,便于:

  • 环境变量注入(如用 $_ENV['DB_HOST'] 替换硬编码)
  • 运行时动态切换数据库(比如读写分离、多租户)
  • 避免 DSN 解析错误(如密码含特殊字符未正确转义)
  • 统一处理字符集、持久连接、SSL 等扩展选项

如果非要拼 DSN 字符串(仅限调试或迁移参考)

你可以手动构造,但 CI 不会自动识别它。常见格式如下(仅作理解,不推荐填入配置):

  • MySQL / MariaDB:mysql:host=localhost;port=3306;dbname=myapp;charset=utf8mb4
  • PostgreSQL:pgsql:host=localhost;port=5432;dbname=myapp;user=postgres;password=123456
  • SQLite3:sqlite:/path/to/database.sqlite

注意:这些字符串需配合 PDO 使用,且不能和 CI 原生驱动混用。填进 CI 配置的 dsn 字段前,务必确认驱动类型和扩展已启用。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PHP CodeIgniter框架
PHP CodeIgniter框架

本专题专注于 PHP 轻量级框架 CodeIgniter 的学习与应用,系统讲解 MVC 模型、路由与控制器、数据库操作、表单验证、安全机制以及 REST API 开发。通过博客系统、内容管理平台和小型电商等实战项目,帮助学员快速掌握 CodeIgniter 的开发方法与实践技能。

2025.08.28

3739

16

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

40

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

20

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

20

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

20

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

20

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

20

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

140

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程