一、MySQLi是什么
MySQLi是PHP访问MySQL数据库的扩展,与MySQL扩展相比,MySQLi支持更多的功能和更好的性能。
MySQLi是“MySQL improved”(MySQL改进版)的简称,它支持面向对象和过程化两种编程方式,并提供了MySQL服务器的完整功能。
MySQLi在PHP 5版本中引入,是PHP 5的一部分,所以如果你想使用MySQLi扩展,必须安装PHP 5或者更高版本。
二、MySQLi的优势
MySQLi扩展比MySQL扩展更加先进,MySQLi库主要提供如下优势:
- 支持面向对象、过程化两种程序设计方式。
- 支持预处理和绑定参数,可有效防止SQL注入攻击。
- 支持事务处理、存储过程和多语句的查询。
- 支持多种数据格式的交换,包括json和XML。
- 对于MySQL的新特性,如MySQL 5的存储过程、触发器和事件,提供了良好的支持。
- 与PHP7兼容性较好。
三、MySQLi的使用
1.连接MySQLi数据库
连接MySQLi数据库需要使用mysqli_connect()函数,该函数连接成功后返回一个连接对象。
//连接MySQLi数据库 $mysqli_conn = mysqli_connect("localhost", "root", "password", "database_name"); if (!$mysqli_conn) { die("连接失败: " . mysqli_connect_error()); }
2.执行SQL语句
执行SQL语句需要使用mysqli_query()函数,该函数执行成功则返回一个结果对象或者true,执行失败则返回false。
//执行SQL语句 $result = mysqli_query($mysqli_conn, "SELECT * FROM employee"); if (!$result) { die("查询失败: " . mysqli_error($mysqli_conn)); }
3.处理结果集
处理结果集需要使用mysqli_fetch_array()函数,该函数返回一行数据作为数组或者对象。
//处理结果集 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { echo "员工编号: " . $row["emp_no"] . " - 员工姓名: " . $row["first_name"] . " " . $row["last_name"] . "
"; }
4.预处理和绑定参数
预处理和绑定参数是指事先编译一个SQL语句模板,然后将参数绑定到该模板的语句中,并将该语句发送给MySQL服务器执行,这样可以避免SQL注入攻击。
//预处理和绑定参数 $stmt = mysqli_prepare($mysqli_conn, "INSERT INTO employee (emp_no, first_name, last_name, gender) VALUES (?, ?, ?, ?)"); mysqli_stmt_bind_param($stmt, "isss", $emp_no, $first_name, $last_name, $gender); $emp_no = 10001; $first_name = "John"; $last_name = "Doe"; $gender = "M"; mysqli_stmt_execute($stmt);
5.事务处理
事务处理指的是将一系列的SQL语句作为一个整体来执行,如果其中任何一条语句执行失败,则撤销所有已经执行的语句。
//事务处理 mysqli_autocommit($mysqli_conn, false); mysqli_query($mysqli_conn, "UPDATE employee SET salary = salary * 1.1 WHERE emp_no = 10001"); mysqli_query($mysqli_conn, "UPDATE titles SET to_date = '9999-01-01' WHERE emp_no = 10001 AND title = 'Engineer'"); mysqli_commit($mysqli_conn);
四、总结
MySQLi是一个强大、高效、安全的扩展,可以帮助开发者更好地管理MySQL数据库,提升网站的性能和安全性。
原创文章,作者:KCINN,如若转载,请注明出处:https://www.506064.com/n/371308.html