php实现图书
PHP实现图书管理系统
数据库设计
创建MySQL数据库表结构,包含图书信息、用户信息等基础表。图书表可包含字段:id(主键)、title(书名)、author(作者)、isbn(ISBN号)、publish_date(出版日期)、status(借阅状态)。
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author VARCHAR(255) NOT NULL,
isbn VARCHAR(20) UNIQUE,
publish_date DATE,
status ENUM('available', 'borrowed') DEFAULT 'available'
);
连接数据库
使用PDO或MySQLi扩展连接数据库,确保安全性。PDO连接示例:
$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());
}
图书添加功能
创建表单页面收集图书信息,后端处理表单提交并插入数据库。
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$title = $_POST['title'];
$author = $_POST['author'];
$isbn = $_POST['isbn'];
$publish_date = $_POST['publish_date'];
$stmt = $pdo->prepare("INSERT INTO books (title, author, isbn, publish_date) VALUES (?, ?, ?, ?)");
$stmt->execute([$title, $author, $isbn, $publish_date]);
}
图书查询功能
实现按书名、作者等条件查询图书,展示查询结果列表。
$search = isset($_GET['search']) ? $_GET['search'] : '';
$stmt = $pdo->prepare("SELECT * FROM books WHERE title LIKE ? OR author LIKE ?");
$stmt->execute(["%$search%", "%$search%"]);
$books = $stmt->fetchAll(PDO::FETCH_ASSOC);
图书借阅功能
更新图书状态为"borrowed",记录借阅人和借阅时间。
if (isset($_POST['borrow'])) {
$bookId = $_POST['book_id'];
$userId = $_SESSION['user_id'];
$pdo->beginTransaction();
try {
$pdo->exec("UPDATE books SET status='borrowed' WHERE id=$bookId");
$pdo->exec("INSERT INTO borrow_records (book_id, user_id, borrow_date) VALUES ($bookId, $userId, NOW())");
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
}
}
用户认证
实现用户登录、注册功能,使用session或token管理用户状态。
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
}
}
安全性考虑
对用户输入进行验证和过滤,防止SQL注入和XSS攻击。
function sanitizeInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$title = sanitizeInput($_POST['title']);
界面设计
使用HTML/CSS创建响应式界面,Bootstrap可快速搭建前端框架。
<form method="post" action="add_book.php">
<div class="form-group">
<label>书名</label>
<input type="text" name="title" class="form-control" required>
</div>
<button type="submit" class="btn btn-primary">添加图书</button>
</form>
部署上线
配置服务器环境(如Apache/Nginx),上传代码到生产环境,设置数据库连接参数。
# 示例Apache配置
<VirtualHost *:80>
ServerName library.example.com
DocumentRoot /var/www/library
<Directory /var/www/library>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>






