上一篇
PHP数据库函数大全,如何快速查找与正确使用?
- 虚拟主机
- 2025-12-18
- 5
PHP中的数据库函数大全涵盖了多种数据库操作,从连接数据库到执行查询、处理结果集以及事务管理等,为开发者提供了全面的数据库操作支持,以下是常用函数的分类介绍及示例说明。

数据库连接与配置
- mysqli_connect:建立MySQL数据库连接 $conn = mysqli_connect("localhost", "username", "password", "database");
- PDO构造函数:创建PDO对象连接多种数据库 $pdo = new PDO("mysql:host=localhost;dbname=test", "user", "pass");
- mysqli_set_charset:设置连接字符集 mysqli_set_charset($conn, "utf8");
SQL执行与结果处理
- mysqli_query:执行SQL语句(MySQLi) $result = mysqli_query($conn, "SELECT * FROM users");
- PDO::query:执行查询并返回结果集对象 $stmt = $pdo>query("SELECT * FROM products");
- mysqli_fetch_assoc:获取关联数组形式的结果行 while ($row = mysqli_fetch_assoc($result)) { echo $row['name']; }
- PDO::fetch:获取结果行(支持多种获取模式) $row = $stmt>fetch(PDO::FETCH_ASSOC);
预处理语句与安全
- mysqli_prepare:预处理SQL语句 $stmt = mysqli_prepare($conn, "INSERT INTO users (name) VALUES (?)"); mysqli_stmt_bind_param($stmt, "s", $name);
- PDO::prepare:PDO预处理 $stmt = $pdo>prepare("INSERT INTO logs (action) VALUES (:action)"); $stmt>execute([':action' => 'login']);
事务管理
- mysqli_begin_transaction:开启事务(MySQLi) mysqli_begin_transaction($conn);
- PDO::beginTransaction:PDO事务开始 $pdo>beginTransaction();
- commit/rollback:提交或回滚事务 mysqli_commit($conn); // 或 $pdo>commit();
错误处理与调试
- mysqli_error:获取错误信息 echo mysqli_error($conn);
- PDO::errorCode:获取PDO错误码 print_r($pdo>errorInfo());
其他常用函数
- mysqli_insert_id:获取最后插入ID
- PDO::lastInsertId:PDO获取最后插入ID
- mysqli_close:关闭连接
- PDO::quote:转义SQL字符串
以下是部分函数的对比表格:

| 函数类别 | MySQLi函数 | PDO方法 | 特点 |
|---|---|---|---|
| 连接 | mysqli_connect | new PDO() | PDO支持多种数据库 |
| 查询执行 | mysqli_query | PDO::query() | PDO支持预处理绑定 |
| 结果获取 | mysqli_fetch_assoc | PDO::fetch() | PDO支持多种获取模式 |
| 预处理 | mysqli_prepare | PDO::prepare() | PDO命名参数更灵活 |
| 事务 | mysqli_commit/rollback | PDO::commit/rollback() | 两者语法相似 |
相关问答FAQs
Q1: PHP中MySQLi和PDO的选择建议?
A1: MySQLi仅支持MySQL数据库,而PDO支持多种数据库(如MySQL、PostgreSQL、SQLite等),若项目可能切换数据库类型,推荐PDO;若仅需操作MySQL且追求原生性能,可选MySQLi,PDO的预处理语句语法更简洁,尤其适合复杂查询。

Q2: 如何防止SQL载入攻破?
A2: 始终使用预处理语句(如mysqli_prepare或PDO::prepare)结合参数绑定,避免直接拼接SQL字符串。
// 安全示例(PDO) $stmt = $pdo>prepare("SELECT * FROM users WHERE id = :id"); $stmt>execute([':id' => $userId]);
禁止使用$_GET/$_POST直接构建SQL语句,同时对用户输入进行过滤和验证。