当前位置:   article > 正文

【PHP面试题52】写出PHP链接MySQL实现增删改查的代码_php增删改查

php增删改查

文章目录


一、前言

本文已收录于PHP全栈系列专栏:PHP面试专区。-
计划将全覆盖PHP开发领域所有的面试题对标资深工程师/架构师序列,欢迎大家提前关注锁定。

连接MySQL的方式有很多种,今天主要通过MySQLi来实现。这是一个比较常见的笔试题。一定要注意掌握。

MySQLi(MySQL improved)是一个在PHP中操作MySQL数据库的扩展库,提供了一套强大的功能来进行数据库的增删改查操作。本博文将深入探讨如何使用MySQLi来实现数据库的增删改查操作,以及一些常见的使用技巧和注意事项。

二、步骤讲解

2.1 连接数据库

在使用MySQLi进行数据库操作之前,首先需要与数据库建立连接。连接数据库的过程包括指定数据库主机、用户名、密码和数据库名称等信息,并使用这些信息创建一个MySQLi连接对象。

<?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'mydatabase';

// 创建MySQLi连接
$mysqli = new mysqli($host, $username, $password, $dbname);

// 检查连接是否成功
if ($mysqli->connect_error) {
    die('连接数据库失败: ' . $mysqli->connect_error);
}
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.2 插入数据

使用MySQLi进行数据插入操作时,需要先构建一个INSERT语句,并执行该语句以将数据插入到数据库中。通常情况下,我们可以使用MySQLi的prepare()bind_param()方法来执行预处理语句,以防止SQL注入攻击。

<?php
// 构建预处理语句
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";

// 准备预处理语句
$stmt = $mysqli->prepare($sql);

// 绑定参数
$name = "xiaomin";
$email = "xiaomin@example.com";
$stmt->bind_param("ss", $name, $email);

// 执行预处理语句
if ($stmt->execute()) {
    echo "数据插入成功!";
} else {
    echo "数据插入失败: " . $stmt->error;
}

// 关闭预处理语句和连接
$stmt->close();
$mysqli->close();
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2.3 查询数据

使用MySQLi进行数据查询操作时,可以使用query()方法执行SQL语句,并使用fetch_assoc()方法获取查询结果集中的数据。需要注意的是,当存在多条记录时,需要使用循环来遍历查询结果。

<?php
// 执行查询语句
$result = $mysqli->query("SELECT * FROM users");

// 检查是否有记录
if ($result->num_rows > 0) {
    // 循环遍历结果集
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - 姓名: " . $row["name"]. " - 邮箱: " . $row["email"]. "<br>";
    }
} else {
    echo "查询结果为空!";
}

// 释放结果集和关闭连接
$result->free();
$mysqli->close();
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2.4 更新数据

使用MySQLi进行数据更新操作时,需要构建一个UPDATE语句,并使用bind_param()方法将更新的值绑定到预处理语句中。

<?php
// 构建预处理语句
$sql = "UPDATE users SET email = ? WHERE id = ?";

// 准备预处理语句
$stmt = $mysqli->prepare($sql);

// 绑定参数
$email = "newemail@example.com";
$id = 1;
$stmt->bind_param("si", $email, $id);

// 执行预处理语句
if ($stmt->execute()) {
    echo "数据更新成功!";
} else {
    echo "数据更新失败: " . $stmt->error;
}

// 关闭预处理语句和连接
$stmt->close();
$mysqli->close();
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2.4 删除数据

使用MySQLi进行数据删除操作时,需要构建一个DELETE语句,并使用bind_param()方法将要删除的数据的条件值绑定到预处理语句中。

<?php
// 构建预处理语句
$sql = "DELETE FROM users WHERE id = ?";

// 准备预处理语句
$stmt = $mysqli->prepare($sql);

// 绑定参数
$id = 1;
$stmt->bind_param("i", $id);

// 执行预处理语句
if ($stmt->execute()) {
    echo "数据删除成功!";
} else {
    echo "数据删除失败: " . $stmt->error;
}

// 关闭预处理语句和连接
$stmt->close();
$mysqli->close();
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2.5 事务处理

MySQLi支持事务处理,使用事务可以确保一系列的数据库操作要么全部执行成功,要么全部回滚。使用MySQLi进行事务处理时,可以使用autocommit()方法来开启或关闭自动提交模式,并使用commit()rollback()方法来手动提交或回滚事务。

<?php
// 开启事务
$mysqli->autocommit(false);

try {
    // 执行一系列的数据库操作

    // 提交事务
    $mysqli->commit();
    echo "事务提交成功!";
} catch (Exception $e) {
    // 回滚事务
    $mysqli->rollback();
    echo "事务回滚成功!";
}

// 关闭连接
$mysqli->close();
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

2.6 结果集处理

MySQLi提供了多种方法来处理查询结果集。除了之前提到的fetch_assoc()方法外,还有fetch_row()方法用于按照索引获取结果集的数据,fetch_array()方法用于同时按照索引和关联数组的方式获取结果集的数据。

<?php
// 执行查询语句
$result = $mysqli->query("SELECT * FROM users");

// 使用fetch_row()方法
while ($row = $result->fetch_row()) {
    echo "ID: " . $row[0]. " - 姓名: " . $row[1]. " - 邮箱: " . $row[2]. "<br>";
}

// 使用fetch_array()方法
while ($row = $result->fetch_array()) {
    echo "ID: " . $row[0]. " - 姓名: " . $row["name"]. " - 邮箱: " . $row["email"]. "<br>";
}

// 释放结果集和关闭连接
$result->free();
$mysqli->close();
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2.7 异常处理

在使用MySQLi操作数据库时,可能会发生一些错误,例如连接数据库失败、执行预处理语句失败等。为了提高代码的健壮性,我们可以使用try-catch块来捕获这些异常,并进行相应的错误处理。

<?php
try {
    // 连接数据库等操作

    // 执行预处理语句等操作
} catch (Exception $e) {
    echo "出现异常: " . $e->getMessage();
}
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

三、综合代码

以下是一个使用PHP链接MySQL数据库,并实现增删改查的完整示例代码,这是必须要掌握的知识点,因为任何系统,都避免不了和数据打交道。

<?php
// 连接数据库
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 增加数据
$sql = "INSERT INTO users (name, email) VALUES ('Tom Doe', 'Tomdoe@example.com')";
if ($conn->query($sql) === TRUE) {
    echo "新记录插入成功<br>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

// 查询数据
$sql = "SELECT * FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
    }
} else {
    echo "0 结果";
}

// 更新数据
$sql = "UPDATE users SET name='Jane Doe' WHERE id=1";
if ($conn->query($sql) === TRUE) {
    echo "记录更新成功<br>";
} else {
    echo "Error updating record: " . $conn->error;
}

// 删除数据
$sql = "DELETE FROM users WHERE id=2";
if ($conn->query($sql) === TRUE) {
    echo "记录删除成功";
} else {
    echo "Error deleting record: " . $conn->error;
}

// 关闭连接
$conn->close();
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

请确保将代码中的$servername$username$password$dbname替换为您自己的数据库连接信息。此代码示例假设您已经创建了一个名为users的表,并且该表包含idnameemail三个列。您可以根据自己的实际需求进行调整。

四、总结

本篇博文综合介绍了如何使用MySQLi实现数据库的增删改查操作,并介绍了一些相关的技巧和注意事项。通过学习MySQLi的使用,我们可以更加安全、高效地操作数据库,并利用MySQLi提供的高级特性来满足不同的需求。希望本篇博文对你理解和使用MySQLi有所帮助,为你的开发工作带来便利。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/592888
推荐阅读
相关标签
  

闽ICP备14008679号