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() —— 必须改用 mysqliPDO

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 面向对象方式(推荐)

更清晰、支持预处理语句防

SQL 注入,且能自然捕获异常(配合 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);
```

真正容易被忽略的是字符集和错误报告机制——连得上不代表存得对、查得准;没开异常模式,PDOmysqli 都可能静默失败。别只抄代码,先确认你用的 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进行调试?(安装和使用教程)  海南网站制作公司有哪些,海口网是哪家的?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  ,怎么在广州志愿者网站注册?