2026-05-07 19:40:54
PHP使用mysqli扩展与MySQL数据库交互时,可通过过程式或对象式连接,结合预处理、结果集处理、编码设置及资源释放等技巧实现高效安全的操作。 具体方法如下:
一、连接数据库的两种方式过程式连接
使用mysqli_connect(host, user, pass, dbname)函数建立连接,返回连接资源。
检查连接是否成功:若返回false,调用mysqli_connect_error()输出错误信息。
示例代码:$conn = mysqli_connect("localhost", "root", "password", "test_db");if (!$conn) { die("连接失败: " . mysqli_connect_error());}
对象式连接
创建mysqli对象:new mysqli(host, user, pass, dbname, port)。
检查连接状态:通过$conn->connect_error属性判断,非null表示失败。
示例代码:$conn = new mysqli("localhost", "root", "password", "test_db");if ($conn->connect_error) { die("连接失败: " . $conn->connect_error);}
步骤
准备SQL:使用prepare()方法,占位符用?或命名参数(如:name)。
绑定参数:调用bind_param()指定变量类型(i=整数,d=双精度,s=字符串,b=二进制)。
执行语句:调用execute()发送命令。
获取结果:查询类操作使用get_result()获取结果集。
示例(插入数据)
$stmt = $conn->prepare("INSERT INTO users (name, age) VALUES (?, ?)");$name = "张三";$age = 25;$stmt->bind_param("si", $name, $age); // "si"表示字符串+整数$stmt->execute();常用方法
fetch_assoc():返回关联数组,字段名为键。
fetch_array():同时返回索引数组和关联数组。
fetch_all():一次性获取所有行(需MYSQLND驱动支持)。
循环处理大数据
$result = $conn->query("SELECT * FROM users");while ($row = $result->fetch_assoc()) { echo $row["name"] . "<br>";}关键步骤
连接成功后立即调用set_charset("utf8")。
确保数据库和表的字符集为UTF8或utf8mb4(支持emoji)。
HTML页面或API响应头需声明<meta charset="UTF-8">。
示例
$conn->set_charset("utf8");// 或过程式:mysqli_set_charset($conn, "utf8");通过以上方法,可高效、安全地完成PHP与MySQL的交互操作。