PHP 连接 MySQL 的 3 种方式:mysql_*、mysqli、PDO 对比与最佳实践
一、为什么要淘汰 mysql_* 函数?
mysql_*是 PHP 早期的 MySQL 扩展,存在致命问题:
不支持预处理语句,易引发 SQL 注入;
仅支持面向过程编程,代码复用性差;
PHP5.5 起标记为废弃,PHP7.0 完全移除。
二、三种连接方式的代码实现
1. mysql_*(仅作对比,禁止使用)
2. mysqli(面向过程 + 面向对象)
方式 1:面向过程
方式 2:面向对象
3. PDO(推荐,支持多数据库)
三、三种方式核心对比
表格
| 特性 | mysql_* | mysqli | PDO |
|---|---|---|---|
| 预处理语句 | 不支持 | 支持 | 支持 |
| 多数据库兼容 | 仅 MySQL | 仅 MySQL | MySQL/PostgreSQL 等 |
| 错误处理 | 手动判断 | 异常 / 手动 | 异常 / 错误码 |
| 面向对象支持 | 否 | 是 | 是 |
| PHP 版本支持 | ≤5.6 | ≥5.0 | ≥5.1 |
| 安全性 | 低 | 中 | 高 |