php创建数据库需要安装扩展吗_php启用mysqli或pdo扩展【配置】
发布时间 - 2026-01-25 00:00:00 点击率:次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 undefin 或 
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 下典型问题:
-
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 时定死,后期改成本来就麻烦。
# mysql
# php
# linux
# word
# windows
# apache
# 浏览器
# ubuntu
# win
# sql创建
# 面向对象
# mysqli
# pdo
# class
# undefined
# function
# 对象
# database
# 数据库
# 报错
# 命令行
# 移除
# 的是
# 生僻字
# 那是
# 尤其是
# 两种
# 要用
# 写了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
焦点电影公司作品,电影焦点结局是什么?
教你用AI润色文章,让你的文字表达更专业
JavaScript实现Fly Bird小游戏
jQuery 常见小例汇总
SQL查询语句优化的实用方法总结
如何在橙子建站上传落地页?操作指南详解
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
网站制作免费,什么网站能看正片电影?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何打造高效商业网站?建站目的决定转化率
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
C语言设计一个闪闪的圣诞树
浅析上传头像示例及其注意事项
如何快速搭建个人网站并优化SEO?
javascript中的try catch异常捕获机制用法分析
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
如何获取上海专业网站定制建站电话?
javascript读取文本节点方法小结
高端建站三要素:定制模板、企业官网与响应式设计优化
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
java ZXing生成二维码及条码实例分享
如何确认建站备案号应放置的具体位置?
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
Python文本处理实践_日志清洗解析【指导】
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
Laravel如何为API编写文档_Laravel API文档生成与维护方法
利用JavaScript实现拖拽改变元素大小
什么是javascript作用域_全局和局部作用域有什么区别?
如何快速搭建支持数据库操作的智能建站平台?
Python高阶函数应用_函数作为参数说明【指导】
长沙企业网站制作哪家好,长沙水业集团官方网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
免费网站制作appp,免费制作app哪个平台好?
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel如何创建自定义Artisan命令?(代码示例)
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
如何在新浪SAE免费搭建个人博客?
免费视频制作网站,更新又快又好的免费电影网站?
如何用虚拟主机快速搭建网站?详细步骤解析
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤

