PHP7.3 mysqli扩展
简介
在开发Web应用程序时,数据库是不可或缺的一部分。PHP提供了多个扩展来处理数据库操作,其中mysqli扩展是最常用和推荐的扩展之一。mysqli扩展是对MySQL数据库的面向对象封装,提供了更强大和更灵活的功能。本文将详细介绍PHP7.3 mysqli扩展的使用。
安装和配置
PHP7.3默认已经包含mysqli扩展,因此无需额外安装。要开始使用mysqli扩展,需要确保正确配置PHP.ini文件。
在PHP.ini文件中,找到以下行并将其取消注释:
;extension=mysqli
取消注释后,重启Web服务器以使配置生效。
连接到数据库
在使用mysqli扩展之前,首先需要建立与MySQL数据库的连接。使用mysqli扩展,可以使用面向对象的方式或过程化的方式来建立连接。
面向对象方式
<?php
servername = "localhost";username = "root";
password = "password";database = "mydatabase";
// 创建连接
conn = new mysqli(servername, username,password, database);
// 检查连接是否成功
if (conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
过程化方式
<?php
servername = "localhost";username = "root";
password = "password";database = "mydatabase";
// 创建连接
conn = mysqli_connect(servername, username,password, database);
// 检查连接是否成功
if (!conn) {
die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
?>
以上代码将尝试连接到名为”mydatabase”的MySQL数据库。如果连接失败,将显示错误信息;如果连接成功,将显示”连接成功”。
执行查询
一旦与数据库建立了连接,就可以执行查询操作了。mysqli扩展提供了多个函数来执行不同类型的查询,例如执行SELECT语句和执行INSERT、UPDATE或DELETE语句。
执行SELECT查询
<?php
sql = "SELECT * FROM users";result = conn->query(sql);
if (result->num_rows>0) {
while (row = result->fetch_assoc()) {
echo "ID: " .row["id"] . ", 用户名: " . $row["username"] . "<br>";
}
} else {
echo "没有结果";
}
?>
以上代码执行了一个SELECT查询,从名为”users”的表中获取所有行并输出它们的id和username。
执行INSERT查询
<?php
sql = "INSERT INTO users (username, password) VALUES ('John', 'Doe')";
if (conn->query(sql) === true) {
echo "插入成功";
} else {
echo "插入失败: " .conn->error;
}
?>
以上代码执行了一个INSERT查询,将新的用户John Doe插入到users表中。
执行UPDATE查询
<?php
sql = "UPDATE users SET username='Jane' WHERE id=1";
if (conn->query(sql) === true) {
echo "更新成功";
} else {
echo "更新失败: " .conn->error;
}
?>
以上代码执行了一个UPDATE查询,将id为1的用户的username更新为Jane。
执行DELETE查询
<?php
sql = "DELETE FROM users WHERE id=1";
if (conn->query(sql) === true) {
echo "删除成功";
} else {
echo "删除失败: " .conn->error;
}
?>
以上代码执行了一个DELETE查询,删除id为1的用户。
预防SQL注入
当使用用户提供的数据构建SQL查询时,容易受到SQL注入攻击。为了预防SQL注入,mysqli扩展提供了预处理语句和绑定参数的功能。
<?php
id = 1;username = "John";
stmt =conn->prepare("SELECT * FROM users WHERE id=? AND username=?");
stmt->bind_param("is",id, username);stmt->execute();
result =stmt->get_result();
if (result->num_rows>0) {
while (row = result->fetch_assoc()) {
echo "ID: " .row["id"] . ", 用户名: " . row["username"] . "<br>";
}
} else {
echo "没有结果";
}stmt->close();
?>
以上代码中,使用了预处理语句和绑定参数的方式执行了一个SELECT查询,从名为”users”的表中获取id为1且用户名为John的用户。
处理事务
在一些情况下,可能需要执行多个相关的查询操作,并确保它们要么全部成功,要么全部失败。这时可以使用事务来管理这些操作。
<?php
conn->begin_transaction();
try {
// 执行多个查询操作conn->commit();
echo "事务提交成功";
} catch (Exception e) {conn->rollback();
echo "事务回滚: " . $e->getMessage();
}
?>
以上代码中,$conn->begin_transaction()
开始一个事务,并在try
块中执行多个查询操作。如果所有操作都成功,调用$conn->commit()
提交事务;如果出现异常,调用$conn->rollback()
回滚事务。
关闭连接
当与数据库的交互完成后,应该关闭与数据库的连接以释放资源。
<?php
$conn->close();
?>
以上代码将关闭与数据库的连接。
结论
本文介绍了PHP7.3 mysqli扩展的使用方法,包括连接数据库、执行查询、预防SQL注入、处理事务和关闭连接等。通过灵活运用这些功能,可以更便捷、高效地进行数据库操作。使用mysqli扩展能够简化数据库操作,并提供更多的安全特性,建议在开发Web应用程序时广泛应用。