php增删改查需要哪些扩展_开启mysqli或pdo扩展方法【说明】
技术百科
蓮花仙者
发布时间:2026-01-01
浏览: 次 PHP CRUD需启用mysqli或PDO扩展,因二者默认未开启;Linux用apt/dnf安装php-mysql/php-mysqlnd,Windows在php.ini中取消extension=mysqli和extension=pdo_mysql注释,重启服务后验证函数与类存在。
PHP 增删改查(CRUD)本身不依赖特定扩展,但必须启用至少一个数据库驱动扩展——mysqli 或 PDO(推荐搭配 pdo_mysql)。没开这两个中的任意一个,mysql_connect() 这类函数根本不存在,连连接都建立不了。
为什么 mysqli 和 PDO 都得「手动开启」?
PHP 默认编译时通常不启用数据库扩展,尤其是 Windows 下的 ZIP 包或某些 Linux 发行版精简包。它们被编译为动态模块(.so 或 .dll),需在 php.ini 中显式启用,否则调用会报错:Fatal error: Uncaught Error: Call to undefined function mysqli_connect() 或 Class 'PDO' not found。
-
mysqli是 MySQL 专用扩展,支持面向对象和过程式两种风格,对 MySQL 特性(如预处理、多语句、事务)支持更直接 -
PDO是通用数据库抽象层,本身不干活,必须配合具体驱动(如pdo_mysql);写法统一,换数据库时改动小 - 二者不能互相替代:启用了
PDO但没启pdo_mysql,依然连不上 MySQL
Linux 下启用 mysqli 和 pdo_mysql 的典型步骤
以主流发行版(Ubuntu/Debian/CentOS)为例,PHP 通常通过包管理器安装,扩展也对应独立包:
- Ubuntu/Debian:

sudo apt install php-mysql
(该包同时启用mysqli和pdo_mysql) - CentOS/RHEL 8+:
sudo dnf install php-mysqlnd
(mysqlnd是原生驱动,比libmysql更推荐) - 确认是否生效:
php -m | grep -E '^(mysqli|pdo|pdo_mysql)$'
应输出三行(mysqli、pdo、pdo_mysql) - 若用 Apache,重启服务:
sudo systemctl restart apache2
(Ubuntu)或sudo systemctl restart httpd
(CentOS) - Nginx + PHP-FPM 需重启
php-fpm:sudo systemctl restart php*-fpm
(版本号需补全,如php8.2-fpm)
Windows 下在 php.ini 中启用扩展
找到你实际使用的 php.ini 文件(运行 php --ini 查看路径),编辑它:
- 取消注释这两行(删除前面的分号
;):;extension=mysqli ;extension=pdo_mysql
→ 改成:extension=mysqli extension=pdo_mysql
- 注意:不是
extension=pdo——PDO核心已内置,但驱动必须单独开;pdo_mysql才是 MySQL 驱动 - 如果使用
php_xampp或旧版,可能看到php_mysqli.dll,确保extension_dir指向正确的ext/目录 - 改完保存,重启 Web 服务器(Apache 或 Nginx)或 PHP-FPM 进程
- 验证:
php -r "var_dump(function_exists('mysqli_connect'), class_exists('PDO'));"输出bool(true) bool(true)即成功
最容易忽略的是:开了 PDO 没开 pdo_mysql,或者开了 mysqli 却误以为 PDO 也能自动用上;还有人改了错误的 php.ini(CLI 和 Web 使用的配置文件常不同),结果 php -v 看着正常,网页里却报错。
# 的是
# 才是
# 开了
# 看着
# 尤其是
# 也能
# windows
# 重启
# 两种
# win
# linux
# centos
# ubuntu
# debian
# Error
# 对象
# class
# 数据库
# 报错
# function
# php
# php8
# mysql
# apache
# nginx
# bool
# undefined
# pdo
# mysqli
# 面向对象
# 发行版
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- 如何使用Golang实现多重错误处理_Golang
- Win11无法拖拽文件到任务栏怎么办_Win11开
- php怎么下载安装并配置环境变量_命令行调用PHP
- Win11怎么更改默认打开方式_Win11关联文件
- php中self::能调用子类重写的方法吗_静态绑
- Drupal 中 HTML 链接被双重转义导致渲染
- Win11怎么设置DNS服务器_Windows11
- mac怎么查看wifi密码_MAC查看已连接WiF
- php485能和物联网模块通信吗_php485对接
- Win10怎么卸载爱奇艺_Win10彻底卸载爱奇艺
- Win11资源管理器卡顿怎么办 Win11文件资源
- Windows7如何安装系统镜像_Windows7
- Win11输入法切换快捷键怎么改_Windows
- LINUX的SELinux是什么_详解LINUX强
- PHP的FastAdmin架构适合二次开发吗_特点
- MAC怎么在照片中添加水印_MAC自带编辑工具文字
- Python对象生命周期管理_创建销毁说明【指导】
- Windows蓝屏错误0x00000023怎么修复
- Win11如何设置自动关机 Win11定时关机命令
- Win10怎样设置闹钟贪睡时间 Win10闹钟贪睡
- 如何在 ACF 中正确更新嵌套多层的 Group
- Win11怎么恢复旧版开始菜单_通过软件还原Win
- php修改数据怎么改富文本_update更新htm
- php会话怎么开启_session_start函数
- 如何在 Pandas 中按元素交集合并两列字符串
- phpstudy本地环境mysql忘记密码_重置m
- Windows10如何重置此电脑_Windows1
- Windows服务启动类型恢复方法_错误修改导致的
- Windows11怎样开启游戏模式_Windows
- How to Properly Use NumPy
- 如何在 Go 中高效缓存与分发网络视频流
- php下载安装后swoole扩展怎么安装_异步框架
- 怎么将XML数据可视化 D3.js加载XML
- c++中如何计算坐标系中两点间距离_c++勾股定理
- Win11怎么设置任务栏图标大小_Windows1
- Win11怎样安装网易云音乐_Win11安装网易云
- Win10如何卸载自带Edge_Win10彻底卸载
- Mac版Final Cut Pro入门_Mac视频
- 如何在Golang中处理JSON字段缺失_Gola
- php打包exe怎么传递参数_命令行参数接收方法【
- 微信短链接怎么还原php_用浏览器开发者工具抓包获
- Windows电脑如何进入安全模式?(多种按键方法
- php485在php5.6下能用吗_php485旧
- 获取 PHP 文件最后修改时间的正确方法
- Win11如何关闭小娜Cortana Win11禁
- Win11怎么激活Windows10_Win11激
- 如何在Golang中定义接口_抽象方法和多态实现
- 零基础学会Python自动化办公_高效处理Exce
- c++怎么调用nana库开发GUI_c++ 现代风
- Windows如何拦截2345弹窗广告_Windo


QQ客服