php代码示例怎样连接mysql数据库_php连接mysql数据库代码示例【示例】
发布时间 - 2026-02-02 00:00:00 点击率:次PHP 8.0+ 已移除 mysql_connect(),必须改用 mysqli 或 PDO;推荐 PDO(跨库、命名参数、异常模式)或 mysqli 面向对象(预处理、异常支持);务必设置 utf8mb4 字符集和错误报告机制。
PHP 8.0+ 已彻底移除 mysql_connect() 等旧函数,直接用会报 Fatal error: Uncaught Error: Call to undefined function mysql_connect() —— 必须改用 mysqli 或 PDO。
用 mysqli 面向过程方式连接(适合快速脚本)
这是最接近老式 mysql_* 写法的替代方案,改动小、上手快,但不推荐用于新项目。
-
mysqli_connect()第一个参数是主机名(如'localhost'),不是'127.0.0.1'—— 后者可能触发 TCP 连接而非 socket,某些配置下反而连不上 - 连接后务必检查返回值:
if (!$conn) { die('连接失败:' . mysqli_connect_error()); } -
中文乱码?在连接后立即执行
mysqli_set_charset($conn, 'utf8mb4');(注意是utf8mb4,不是utf8)
```php
$conn = mysqli_connect('localhost', 'root', 'password', 'testdb', 3306);
if (!$conn) {
die('连接失败:' . mysqli_connect_error());
}
mysqli_set_charset($conn, 'utf8mb4');
```用 mysqli 面向对象方式(推荐)
更清晰、支持预处理语句防

mysqli_report)。
- 构造时传参顺序和面向过程一致,但需用
new mysqli(...) - 连接失败时默认不抛异常,要先开启报告:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); - 数据库名可为空,后续用
$mysqli->select_db('dbname')切换,适合多库场景
```php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'root', 'password', 'testdb', 3306);
$mysqli->set_charset('utf8mb4');
```用 PDO 连接(最灵活,跨数据库友好)
如果你未来可能换 PostgreSQL 或 SQLite,或者需要命名参数(:name)、事务嵌套控制,PDO 是首选。
- DNS 字符串格式为
mysql:host=localhost;dbname=testdb;charset=utf8mb4——charset必须写在 DNS 里,单独调exec("SET NAMES utf8mb4")不可靠 - 错误模式设为
PDO::ERRMODE_EXCEPTION,否则query()失败只返回false,不报错 - 密码等敏感信息别硬编码,应从环境变量读取:
$_ENV['DB_PASSWORD']或getenv('DB_PASSWORD')
```php
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
$pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8mb4', 'root', 'password', $options);
```真正容易被忽略的是字符集和错误报告机制——连得上不代表存得对、查得准;没开异常模式,PDO 和 mysqli 都可能静默失败。别只抄代码,先确认你用的 PHP 版本、MySQL 配置、以及是否真需要持久连接(PDO::ATTR_PERSISTENT => true 在 CLI 下反而有害)。
# mysql
# php
# word
# 编码
# 中文乱码
# 环境变量
# dns
# sql
# if
# 面向对象
# die
# Error
# mysqli
# pdo
# 字符串
# undefined
# function
# 对象
# sqlite
# postgresql
# 数据库
# 会报
# 错误报告
# 移除
# 的是
# 这是
# 如果你
# 第一个
# 设为
# 要先
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
JavaScript如何实现音频处理_Web Audio API如何工作?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
制作企业网站建设方案,怎样建设一个公司网站?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何在IIS中新建站点并配置端口与IP地址?
如何将凡科建站内容保存为本地文件?
原生JS实现图片轮播切换效果
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
如何在新浪SAE免费搭建个人博客?
图册素材网站设计制作软件,图册的导出方式有几种?
javascript读取文本节点方法小结
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
如何用AI帮你把自己的生活经历写成一个有趣的故事?
晋江文学城电脑版官网 晋江文学城网页版直接进入
zabbix利用python脚本发送报警邮件的方法
网站制作壁纸教程视频,电脑壁纸网站?
如何在腾讯云服务器上快速搭建个人网站?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
成都网站制作公司哪家好,四川省职工服务网是做什么用?
轻松掌握MySQL函数中的last_insert_id()
Laravel如何生成URL和重定向?(路由助手函数)
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
智能起名网站制作软件有哪些,制作logo的软件?
Laravel如何配置任务调度?(Cron Job示例)
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何快速生成橙子建站落地页链接?
MySQL查询结果复制到新表的方法(更新、插入)
如何在云指建站中生成FTP站点?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
如何用花生壳三步快速搭建专属网站?
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
EditPlus中的正则表达式 实战(1)
Laravel怎么清理缓存_Laravel optimize clear命令详解
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
如何在七牛云存储上搭建网站并设置自定义域名?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
jquery插件bootstrapValidator表单验证详解
Laravel如何使用Telescope进行调试?(安装和使用教程)
海南网站制作公司有哪些,海口网是哪家的?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
,怎么在广州志愿者网站注册?

