php数据库怎么进用ci框架进_phpCI连库法【步骤】
发布时间 - 2026-01-29 00:00:00 点击率:次CodeIgniter 3 默认不支持 PHP 8.1+ 的 mysql_* 扩展,须用 mysqli 或 pdo 驱动并正确配置于 application/config/database.php;CI 4 则需在 app/Config/Database.php 中设置,通过 \Config\Database::connect() 获取实例,且注意 strict mode 兼容性。
CodeIgniter 3 默认不支持 PHP 8.1+ 的 mysql_connect() 和废弃的 mysql_* 扩展,直接“连库失败”八成是驱动没配对或配置写错位置。
确认你用的是 CI 3 还是 CI 4
CI 3 和 CI 4 的数据库配置方式、驱动名、加载逻辑完全不同,混用会导致 Class 'CI_DB' not found 或 Database: Unable to connect to your database server:
- CI 3:配置在
application/config/database.php,驱动名是mysqli(不是mysql)或pdo - CI 4:配置在
app/Config/Database.php,使用PDO实例化,默认驱动是MySQLi,但类结构和加载方式彻底重构 - 如果你从 CI 2 升级上来,
mysql驱动已完全移除,必须改mysqli或pdo
CI 3 中正确配置 mysqli 数据库连接
重点不是“怎么填”,而是填对地方、用对键名、避开过时写法:
-
$db['default']['hostname'] = 'localhost';(不要写127.0.0.1除非明确需要 IPv4,本地用localhost更稳妥) -
$db['default']['username'] = 'root';(密码为空时,'password' => ''不能省略) -
$db['default']['database'] = 'myapp';(库名必须已存在,CI 不自动建库) -
$db['default']['dbdriver'] = 'mysqli';(绝对不要写mysql,否则报Unknown driver) -
$db['default']['char_set'] = 'utf8mb4';(推荐,避免 emoji 存储异常) - 如果 MySQL 启用了 strict mode,建议加:
$db['default']['stricton'] = FALSE;,否则某些 INSERT 可能报错
CI 4 中启用数据库并验证连接
CI 4 不再靠 $this->load->database(),而是通过服务容器获取实例,常见连不上是因为没启用或配置未生效:
- 确保
app/Config/Database.php中public $default组的DSN为空(CI 4 推荐拆解配置而非拼 DSN) - 检查
public $default的
hostname、username、password、database是否赋值,且DBDriver是MySQLi(首字母大写) - 在控制器中用:
$db = \Config\Database::connect();,而不是$this->db(除非你已在 BaseController 中初始化) - 调试连接是否成功:
var_dump($db->connID !== false);—— 返回bool(true)才算通 - 注意:CI 4 默认开启
strictOn,若 MySQL 版本较老(如 5.6),可能需设为false避免语法兼容问题
连得上但查不出数据?检查 active record 模式和错误抑制
CI 的查询失败常常静默,尤其在生产环境 display_errors = Off 时:
- 开发阶段务必打开调试:
define('ENVIRONMENT', 'development');并确认app/Config/Logger.php中$threshold≥ 1 - 执行查询后立即检查:
if ($this->db->error()['code'] !== 0) { print_r($this->db->error()); } - CI 3 中
$this->db->get()默认返回对象,但若表不存在或字段名错,不会抛异常,只会返回空结果;可用$this->db->last_query()看实际发了什么 SQL - CI 4 中对应的是
$builder->getCompiledSelect()或$db->getLastQuery()->getQuery()
真正卡住的地方往往不是“怎么连”,而是驱动名写错、配置文件路径不对、MySQL 用户没远程权限(localhost ≠ 127.0.0.1 的权限体系)、或 CI 自带的缓存机制把旧错误配置记住了——删掉 application/cache/ 下所有文件再试一次,比反复改配置更有效。
# mysql
# php
# word
# app
# 配置文件
# sql
# define
# if
# Error
# mysqli
# pdo
# bool
# class
# public
# 对象
# default
# this
# database
# 数据库
# 重构
# 的是
# 不支持
# 要写
# 为空
# 加载
# 如果你
# 是因为
# 不出
# 设为
# 只会
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解jQuery停止动画——stop()方法的使用
Python正则表达式进阶教程_复杂匹配与分组替换解析
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
企业网站制作这些问题要关注
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
如何用搬瓦工VPS快速搭建个人网站?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
JS实现鼠标移上去显示图片或微信二维码
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
Android中AutoCompleteTextView自动提示
如何在IIS服务器上快速部署高效网站?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Laravel如何处理异常和错误?(Handler示例)
Android GridView 滑动条设置一直显示状态(推荐)
Laravel如何与Inertia.js和Vue/React构建现代单页应用
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
如何快速选择适合个人网站的云服务器配置?
简历在线制作网站免费版,如何创建个人简历?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Laravel API资源类怎么用_Laravel API Resource数据转换
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
香港服务器网站推广:SEO优化与外贸独立站搭建策略
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
打造顶配客厅影院,这份100寸电视推荐名单请查收
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
JavaScript模板引擎Template.js使用详解
常州企业网站制作公司,全国继续教育网怎么登录?
高性价比服务器租赁——企业级配置与24小时运维服务
如何在宝塔面板中创建新站点?
如何实现javascript表单验证_正则表达式有哪些实用技巧
利用 Google AI 进行 YouTube 视频 SEO 描述优化
如何快速完成中国万网建站详细流程?
如何用y主机助手快速搭建网站?
如何利用DOS批处理实现定时关机操作详解
网站制作软件免费下载安装,有哪些免费下载的软件网站?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
googleplay官方入口在哪里_Google Play官方商店快速入口指南
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
深圳网站制作平台,深圳市做网站好的公司有哪些?
Swift中循环语句中的转移语句 break 和 continue
如何快速查询域名建站关键信息?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
网页设计与网站制作内容,怎样注册网站?
香港服务器部署网站为何提示未备案?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)


