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() 这类函数根本不存在,连连接都建立不了。
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以主流发行版(Ubuntu/Debian/CentOS)为例,PHP 通常通过包管理器安装,扩展也对应独立包:

sudo apt install php-mysql(该包同时启用
mysqli 和 pdo_mysql)sudo dnf install php-mysqlnd(
mysqlnd 是原生驱动,比 libmysql 更推荐)php -m | grep -E '^(mysqli|pdo|pdo_mysql)$'应输出三行(
mysqli、pdo、pdo_mysql)sudo systemctl restart apache2(Ubuntu)或
sudo systemctl restart httpd(CentOS)
php-fpm:sudo systemctl restart php*-fpm(版本号需补全,如
php8.2-fpm)找到你实际使用的 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/ 目录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 看着正常,网页里却报错。