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; ?>
】
相关推荐
- 手机php文件怎么变成mp4_安卓苹果打开php转
- 如何在Golang中实现RPC异步返回_Golan
- Win11怎么设置夜间模式_Windows11显示
- WindowsUSB驱动安装异常怎么办_USB驱动
- Windows系统文件被保护机制阻止怎么办_权限不
- 如何使用Golang操作指针变量_Golang解引
- Win10怎样卸载自带Edge_Win10卸载Ed
- Win10如何更改网络连接_Windows10以太
- PHP cURL GET请求:正确设置认证与自定义
- Win11怎么关闭内容自适应亮度_Windows1
- Win11怎么关闭边缘滑动手势_Windows11
- Golang如何实现基本的用户注册_Golang用
- Win11如何设置自动关机 Win11定时关机命令
- c++ atoi和atof函数用法_c++字符数组
- Python网络异常模拟_测试说明【指导】
- 如何用::实现工具类方法调用_php静态工具类设计
- Win11 C盘满了怎么清理 Win11磁盘清理和
- windows如何修改文件默认打开方式_windo
- 如何正确访问 Laravel 模型或对象的属性而非
- Windows系统被恶意软件破坏后的恢复策略_错误
- Win11怎么开启远程桌面连接_Windows11
- 如何关闭Win10自动更新更新_Win10系统自动
- c++如何实现多态性_c++ 虚函数表原理与动态绑
- Mac如何备份到iCloud_Mac桌面与文稿文件
- Win11怎么查看电脑配置_Win11硬件配置详细
- mac怎么看硬盘大小_MAC查看磁盘存储空间与文件
- Win10怎么更改用户名 Win10修改账户名称操
- Win11怎么查看激活状态_查询Windows 1
- 如何使用Golang实现多重错误处理_Golang
- php后缀怎么变mp4能播放_让php伪装mp4正
- Win10系统更新错误0x80240034怎么办
- 一文教你快速开通网站LOGO图
- php删除数据怎么清空表_truncate与del
- php485能和物联网模块通信吗_php485对接
- Win11怎么调整屏幕亮度_Windows 11调
- 如何用正则表达式精确匹配最多含一个换行符的起止片段
- Windows10电脑怎么设置防火墙出站规则_Wi
- php查询数据怎么导出csv_查询结果转csv文件
- TestNG的testng.xml配置文件怎么写
- c++如何使用std::bind绑定函数参数_c+
- Win11摄像头无法使用怎么办_Win11相机隐私
- Python高性能计算项目教程_NumPyCyth
- Python大型项目拆分策略_模块化解析【教程】
- VSC怎么在PHP中调试MySQL_数据库交互排查
- 如何使用正则表达式批量替换重复的星号-短横模式为固
- Mac如何查看电池健康百分比_Mac系统信息电源检
- Windows怎样关闭桌面弹窗广告_Windows
- mac怎么打开终端_MAC终端Terminal使用
- VSC怎样在VSC中调试PHPAPI_接口调试技巧
- 如何在Golang中实现CI/CD流水线自动化测试


QQ客服