当前位置:首页 > PHP

php实现借书

2026-03-12 22:31:43PHP

实现借书功能的PHP代码示例

以下是一个简单的PHP实现借书功能的代码示例,包含数据库操作和基本逻辑验证。

数据库准备 创建包含用户、书籍和借阅记录的表结构:

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

CREATE TABLE books (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    author VARCHAR(100),
    available BOOLEAN DEFAULT TRUE
);

CREATE TABLE borrow_records (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    book_id INT NOT NULL,
    borrow_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    return_date DATETIME,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (book_id) REFERENCES books(id)
);

借书功能实现

<?php
// 数据库连接
$db = new PDO('mysql:host=localhost;dbname=library', 'username', 'password');

function borrowBook($userId, $bookId) {
    global $db;

    // 检查用户是否存在
    $stmt = $db->prepare("SELECT id FROM users WHERE id = ?");
    $stmt->execute([$userId]);
    if (!$stmt->fetch()) {
        return "用户不存在";
    }

    // 检查书籍是否存在且可借
    $stmt = $db->prepare("SELECT available FROM books WHERE id = ?");
    $stmt->execute([$bookId]);
    $book = $stmt->fetch();

    if (!$book) {
        return "书籍不存在";
    }

    if (!$book['available']) {
        return "书籍已被借出";
    }

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

    try {
        // 更新书籍状态
        $stmt = $db->prepare("UPDATE books SET available = FALSE WHERE id = ?");
        $stmt->execute([$bookId]);

        // 创建借阅记录
        $stmt = $db->prepare("INSERT INTO borrow_records (user_id, book_id) VALUES (?, ?)");
        $stmt->execute([$userId, $bookId]);

        $db->commit();
        return "借书成功";
    } catch (Exception $e) {
        $db->rollBack();
        return "借书失败: " . $e->getMessage();
    }
}

// 示例调用
$result = borrowBook(1, 5); // 用户ID为1借阅书籍ID为5
echo $result;
?>

功能扩展建议

添加借阅限制 可以在用户表中添加最大借阅数量字段,并在借书前检查:

$stmt = $db->prepare("SELECT COUNT(*) as count FROM borrow_records WHERE user_id = ? AND return_date IS NULL");
$stmt->execute([$userId]);
$borrowed = $stmt->fetch()['count'];

$stmt = $db->prepare("SELECT max_borrow FROM users WHERE id = ?");
$stmt->execute([$userId]);
$maxBorrow = $stmt->fetch()['max_borrow'];

if ($borrowed >= $maxBorrow) {
    return "已达到最大借阅数量";
}

添加借阅期限 在创建借阅记录时设置预计归还日期:

$dueDate = date('Y-m-d H:i:s', strtotime('+30 days'));
$stmt = $db->prepare("INSERT INTO borrow_records (user_id, book_id, due_date) VALUES (?, ?, ?)");
$stmt->execute([$userId, $bookId, $dueDate]);

安全注意事项

使用预处理语句防止SQL注入 验证所有输入参数 添加适当的错误处理 考虑使用try-catch块处理数据库异常 对敏感操作实施权限检查

php实现借书

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

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

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 // 创建…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移除…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…