PHP连接MySQL创建数据库必须启用mysqli或PDO扩展,否则会报错;PHP 8.0+已移除mysql_*函数,仅支持mysqli和PDO_mysql;需确认php.ini中正确开启对应扩展并检查依赖、路径及CLI/Web配置一致性。

PHP 连接 MySQL 创建数据库,必须启用 mysqli 或 PDO 扩展
不启用扩展,mysqli_connect() 和 PDO::__construct() 都会报错,比如 Call to undefined function mysqli_connect() 或 Class 'PDO' not found。PHP 默认不强制启用任一 MySQL 相关扩展,尤其是较新版本(如 PHP 8.0+)已彻底移除 mysql_* 函数,仅保留 mysqli 和 PDO_mysql 两种合法方式。
确认扩展是否已启用:用 phpinfo() 或命令行查
在 Web 环境中,建一个 info.php 文件,内容为 ,浏览器访问后搜索 “mysqli” 或 “pdo_mysql”。命令行下直接运行:
php -m | grep -i "mysqli\|pdo"
若无输出,说明未启用;若只看到 pdo 但没 pdo_mysql,PDO 也不能操作 MySQL。
-
mysqli是 MySQL 原生驱动,支持面向对象和过程式调用,创建数据库常用mysqli_query($conn, "CREATE DATABASE ...") -
PDO_mysql是 PDO 的 MySQL 具体实现,需确保extension=pdo_mysql在php.ini中开启(仅开pdo不够) - Windows 下常见路径:
php.ini通常在 PHP 安装目录,扩展文件如php_mysqli.dll、php_pdo_mysql.dll需在ext/目录且未被注释 - Linux(如 Ubuntu)用 apt 安装时,常需额外安装包:
php-mysql(含 mysqli 和 pdo_mysql),而非仅php-common
启用扩展后仍连不上?检查 extension_dir 和依赖
即使写了 extension=mysqli,也可能因路径错误或缺少依赖失败。Windows 下典型问题:
立即学习“PHP免费学习笔记(深入)”;
-
extension_dir指向错误目录(如写成ext但实际是./ext或绝对路径不对) - 缺少
libmysql.dll或php_mysqli.dll依赖的 VC 运行库(如 VS2019 运行时),导致 Apache 启动失败或页面空白 - PHP 版本与扩展 DLL 不匹配(如用 PHP 8.2 的
php_mysqli.dll加载到 PHP 8.1 环境) - CLI 和 Web 使用不同
php.ini:php --ini查 CLI 路径,phpinfo()查 Web 路径,二者需分别配置
创建数据库的最小可行代码(以 mysqli 为例)
扩展启用后,以下代码可直接运行(注意替换主机、用户、密码):
$conn = mysqli_connect('localhost', 'root', 'password');
if (!$conn) {
die('连接失败: ' . mysqli_connect_error());
}
if (mysqli_query($conn, "CREATE DATABASE IF NOT EXISTS testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")) {
echo "数据库创建成功";
} else {
echo "创建失败: " . mysqli_error($conn);
}
mysqli_close($conn);
关键点:不能直接在 mysqli_connect() 里指定数据库名(那是连接后要选的库),创建库本身必须先连上 MySQL 服务(不指定 DB),再发 CREATE DATABASE 语句。PDO 写法类似,但要用 PDO::exec(),且 DSN 中也不能带数据库名。
最常被忽略的是字符集声明——不加 CHARACTER SET utf8mb4,后续存 emoji 或某些生僻字会出错;而这个设置必须在 CREATE DATABASE 时定死,后期改成本来就麻烦。











