当前位置: 技术文章>> 如何在 PHP 中使用 MySQLi 进行数据库操作?

文章标题:如何在 PHP 中使用 MySQLi 进行数据库操作?
  • 文章分类: 后端
  • 6599 阅读
在PHP中,使用MySQLi(MySQL Improved)扩展进行数据库操作是一种常见且推荐的做法。MySQLi扩展提供了一个面向过程和面向对象两种风格的API,让开发者可以根据自己的喜好和项目需求选择使用。下面,我将详细阐述如何在PHP中通过MySQLi扩展进行数据库的连接、数据查询、插入、更新和删除等基本操作。同时,我会在适当的地方提及“码小课”,作为一个学习资源的提示,帮助读者进一步深入学习。 ### 一、数据库连接 在使用MySQLi进行任何数据库操作之前,首先需要与数据库建立连接。这里以面向对象的方式为例: ```php connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?> ``` 这段代码首先定义了数据库服务器的地址、用户名、密码和数据库名。然后,通过`new mysqli()`构造函数创建了一个`mysqli`对象,用于表示与数据库的连接。如果连接失败,会通过`die()`函数输出错误信息并终止脚本执行。成功连接后,会输出“连接成功”。 ### 二、执行SQL查询 #### 1. 查询数据 一旦建立了数据库连接,就可以执行SQL查询来获取数据了。 ```php query($sql); if ($result->num_rows > 0) { // 输出每行数据 while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
"; } } else { echo "0 结果"; } $conn->close(); ?> ``` 这段代码首先执行了一个SQL查询,然后从结果集中逐行提取数据,并打印出来。`fetch_assoc()`方法用于获取一行作为关联数组,数组的键是列名。 #### 2. 预处理语句 为了增强安全性,特别是防止SQL注入攻击,建议使用预处理语句(Prepared Statements)。 ```php prepare("SELECT id, firstname, lastname FROM Users WHERE id = ?"); $stmt->bind_param("i", $id); $id = 1; // 假设我们要查询ID为1的用户 $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
"; } } else { echo "0 结果"; } $stmt->close(); $conn->close(); ?> ``` 在这段代码中,我们使用了`prepare()`方法来准备一个SQL语句,并通过`bind_param()`方法绑定参数。这样做可以确保传递给SQL语句的值被正确地转义,从而防止SQL注入。 ### 三、插入数据 使用预处理语句插入数据也是类似的: ```php prepare("INSERT INTO Users (firstname, lastname) VALUES (?, ?)"); $stmt->bind_param("ss", $firstname, $lastname); $firstname = "John"; $lastname = "Doe"; if ($stmt->execute()) { echo "新记录插入成功"; } else { echo "Error: " . $stmt->error; } $stmt->close(); $conn->close(); ?> ``` 这段代码演示了如何插入一条新记录到数据库中。通过`bind_param()`方法,我们绑定了要插入的值的类型和变量。 ### 四、更新数据 更新数据同样可以使用预处理语句来完成: ```php prepare("UPDATE Users SET lastname = ? WHERE id = ?"); $stmt->bind_param("si", $lastname, $id); $lastname = "Smith"; $id = 1; if ($stmt->execute()) { echo "记录更新成功"; } else { echo "Error: " . $stmt->error; } $stmt->close(); $conn->close(); ?> ``` ### 五、删除数据 删除数据也可以使用预处理语句来执行: ```php prepare("DELETE FROM Users WHERE id = ?"); $stmt->bind_param("i", $id); $id = 1; if ($stmt->execute()) { echo "记录删除成功"; } else { echo "Error: " . $stmt->error; } $stmt->close(); $conn->close(); ?> ``` ### 六、异常处理 虽然上面的例子中使用了简单的错误检查,但在实际项目中,建议使用异常处理来捕获和处理可能发生的错误。MySQLi扩展支持异常模式,可以通过设置`mysqli`对象的`report_mode`属性来启用。 ```php ``` 启用异常模式后,如果数据库操作失败,将自动抛出异常,你可以通过try-catch语句来捕获和处理这些异常。 ### 七、总结 通过上面的介绍,我们了解了如何在PHP中使用MySQLi扩展进行数据库的基本操作,包括连接数据库、执行SQL查询、插入、更新和删除数据等。重要的是要始终使用预处理语句来增强SQL查询的安全性,防止SQL注入攻击。同时,合理利用异常处理机制来捕获和处理可能发生的错误。如果你对MySQLi扩展的更多高级功能感兴趣,比如事务处理、多语句执行等,可以访问“码小课”网站获取更多学习资源,进一步深入学习。
推荐文章