一、mysqli是什么
MySQLi是PHP自带的一种用于操作MySQL数据库的扩展程序,可以看成是PHP对MySQL数据库进行操作的接口。MySQLi提供了一个更加简单、面向对象的API,支持新的MySQL特性。
MySQLi扩展既提供了一个面向过程的接口,也提供了一个面向对象的接口,可以满足不同用户的需求。
二、面向过程的使用方法
首先,我们需要连接到MySQL数据库。连接MySQL数据库时需要提供主机名、用户名、密码和数据库名等信息,如下所示:
$mysqli = mysqli_connect("localhost", "root", "password", "database"); if (!$mysqli) { echo "连接失败"; exit; }
接下来,我们可以执行SQL语句,比如查询数据表中的数据:
$sql = "SELECT * FROM Table"; $result = mysqli_query($mysqli, $sql); if (!$result) { echo "查询失败"; exit; } while ($row = mysqli_fetch_assoc($result)) { echo $row["column_name"]; } mysqli_free_result($result);
最后,我们需要关闭与MySQL数据库的连接:
mysqli_close($mysqli);
三、面向对象的使用方法
面向对象的使用方法与面向过程的使用方法类似,只不过需要先创建一个MySQLi对象:
$mysqli = new mysqli("localhost", "root", "password", "database"); if ($mysqli->connect_errno) { echo "连接失败"; exit; }
接下来,我们可以执行SQL语句,比如查询数据表中的数据:
$sql = "SELECT * FROM Table"; $result = $mysqli->query($sql); if (!$result) { echo "查询失败"; exit; } while ($row = $result->fetch_assoc()) { echo $row["column_name"]; } $result->close();
最后,我们需要关闭与MySQL数据库的连接:
$mysqli->close();
四、预处理语句
预处理语句是MySQLi扩展提供的一种安全的SQL执行方法,它是通过将SQL语句中的参数化,从而防止SQL注入攻击。
预处理语句的使用方法如下:
$mysqli = new mysqli("localhost", "root", "password", "database"); if ($mysqli->connect_errno) { echo "连接失败"; exit; } $sql = "SELECT * FROM Table WHERE column_name = ?"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("s", $value); $value = "search_value"; $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo $row["column_name"]; } $result->close(); $stmt->close(); $mysqli->close();
在预处理语句中,参数用“?”表示,使用bind_param()方法将参数绑定到语句中。
五、事务处理
MySQLi扩展支持事务处理。事务处理可以保证多条SQL语句操作MySQL数据库的原子性和一致性,如果其中一条SQL语句失败,整个事务将被回滚。
事务处理的使用方法如下:
$mysqli = new mysqli("localhost", "root", "password", "database"); if ($mysqli->connect_errno) { echo "连接失败"; exit; } $mysqli->begin_transaction(); $sql1 = "INSERT INTO Table (column1, column2) VALUES (?, ?)"; $stmt1 = $mysqli->prepare($sql1); $stmt1->bind_param("ss", $value1, $value2); $value1 = "value1"; $value2 = "value2"; $stmt1->execute(); $stmt1->close(); $sql2 = "UPDATE Table SET column1 = ? WHERE column2 = ?"; $stmt2 = $mysqli->prepare($sql2); $stmt2->bind_param("ss", $value3, $value2); $value3 = "value3"; $stmt2->execute(); $stmt2->close(); $mysqli->commit(); $mysqli->close();
在事务处理中,使用begin_transaction()方法开始事务处理,使用commit()方法提交事务处理,如果出现错误则使用rollback()方法回滚事务。
六、总结
MySQLi扩展是PHP操作MySQL数据库常用的扩展程序,它提供了面向过程和面向对象两种使用方法,支持预处理语句和事务处理,使用MySQLi可以使操作MySQL数据库更加简单、高效和安全。