当前位置:首页 > PHP

php实现借书

2026-01-30 01:58:17PHP

实现借书功能的基本步骤

使用PHP实现借书功能需要结合数据库操作和业务逻辑处理。以下是关键步骤:

数据库设计

创建必要的数据库表结构:

CREATE TABLE books (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    author VARCHAR(255),
    isbn VARCHAR(20),
    available_copies INT DEFAULT 1,
    total_copies INT DEFAULT 1
);

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE
);

CREATE TABLE borrow_records (
    id INT AUTO_INCREMENT PRIMARY KEY,
    book_id INT,
    user_id INT,
    borrow_date DATE,
    return_date DATE,
    status ENUM('borrowed', 'returned') DEFAULT 'borrowed',
    FOREIGN KEY (book_id) REFERENCES books(id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

连接数据库

建立数据库连接:

php实现借书

$host = 'localhost';
$dbname = 'library';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}

借书功能实现

处理借书逻辑的核心代码:

function borrowBook($pdo, $userId, $bookId) {
    // 检查书籍是否可借
    $stmt = $pdo->prepare("SELECT available_copies FROM books WHERE id = ?");
    $stmt->execute([$bookId]);
    $book = $stmt->fetch();

    if (!$book || $book['available_copies'] < 1) {
        return "Book not available for borrowing";
    }

    // 开始事务
    $pdo->beginTransaction();

    try {
        // 减少可用副本数
        $stmt = $pdo->prepare("UPDATE books SET available_copies = available_copies - 1 WHERE id = ?");
        $stmt->execute([$bookId]);

        // 创建借阅记录
        $borrowDate = date('Y-m-d');
        $stmt = $pdo->prepare("INSERT INTO borrow_records (book_id, user_id, borrow_date, status) VALUES (?, ?, ?, 'borrowed')");
        $stmt->execute([$bookId, $userId, $borrowDate]);

        $pdo->commit();
        return "Book borrowed successfully";
    } catch (Exception $e) {
        $pdo->rollBack();
        return "Error borrowing book: " . $e->getMessage();
    }
}

还书功能实现

配套的还书功能:

php实现借书

function returnBook($pdo, $recordId) {
    // 获取借阅记录
    $stmt = $pdo->prepare("SELECT book_id FROM borrow_records WHERE id = ? AND status = 'borrowed'");
    $stmt->execute([$recordId]);
    $record = $stmt->fetch();

    if (!$record) {
        return "Invalid borrow record";
    }

    $pdo->beginTransaction();

    try {
        // 更新书籍可用数量
        $stmt = $pdo->prepare("UPDATE books SET available_copies = available_copies + 1 WHERE id = ?");
        $stmt->execute([$record['book_id']]);

        // 更新借阅记录状态
        $returnDate = date('Y-m-d');
        $stmt = $pdo->prepare("UPDATE borrow_records SET return_date = ?, status = 'returned' WHERE id = ?");
        $stmt->execute([$returnDate, $recordId]);

        $pdo->commit();
        return "Book returned successfully";
    } catch (Exception $e) {
        $pdo->rollBack();
        return "Error returning book: " . $e->getMessage();
    }
}

安全考虑

实现借书功能时需注意:

  • 使用预处理语句防止SQL注入
  • 事务处理确保数据一致性
  • 输入验证和错误处理
  • 适当的权限控制

前端界面示例

简单的HTML表单示例:

<form action="borrow.php" method="post">
    <label for="user_id">User ID:</label>
    <input type="number" id="user_id" name="user_id" required>

    <label for="book_id">Book ID:</label>
    <input type="number" id="book_id" name="book_id" required>

    <button type="submit">Borrow Book</button>
</form>

处理表单的borrow.php:

require_once 'db_connection.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $userId = filter_input(INPUT_POST, 'user_id', FILTER_VALIDATE_INT);
    $bookId = filter_input(INPUT_POST, 'book_id', FILTER_VALIDATE_INT);

    if ($userId && $bookId) {
        $result = borrowBook($pdo, $userId, $bookId);
        echo $result;
    } else {
        echo "Invalid input";
    }
}

这个实现提供了基本的借书功能框架,可以根据实际需求进行扩展和完善。

标签: 借书php
分享给朋友:

相关文章

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…

php实现apk下载

php实现apk下载

实现APK下载的PHP代码 创建一个简单的PHP脚本来处理APK文件的下载请求,确保文件传输正确且安全。 <?php $file = 'path/to/your/app.apk'; if (f…