php实现图书
PHP 实现图书管理系统
数据库设计
创建数据库表存储图书信息,基本字段包括图书ID、书名、作者、ISBN、出版日期、库存数量等。
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,
quantity INT DEFAULT 0
);
连接数据库
使用PDO或MySQLi扩展连接MySQL数据库,建议使用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());
}
添加图书功能
创建表单收集图书信息,通过PHP处理表单提交并将数据插入数据库。
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$title = $_POST['title'];
$author = $_POST['author'];
$isbn = $_POST['isbn'];
$publish_date = $_POST['publish_date'];
$quantity = $_POST['quantity'];
$stmt = $pdo->prepare("INSERT INTO books (title, author, isbn, publish_date, quantity) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([$title, $author, $isbn, $publish_date, $quantity]);
}
显示图书列表
查询数据库中的所有图书并以表格形式展示。
$stmt = $pdo->query("SELECT * FROM books");
$books = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($books as $book) {
echo "<tr>
<td>{$book['title']}</td>
<td>{$book['author']}</td>
<td>{$book['isbn']}</td>
<td>{$book['publish_date']}</td>
<td>{$book['quantity']}</td>
</tr>";
}
搜索功能
实现按书名或作者搜索图书的功能。
if (isset($_GET['search'])) {
$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);
}
借阅功能
创建借阅记录表并实现借阅逻辑,减少库存数量。
CREATE TABLE borrow_records (
id INT AUTO_INCREMENT PRIMARY KEY,
book_id INT,
user_name VARCHAR(255),
borrow_date DATE,
return_date DATE,
FOREIGN KEY (book_id) REFERENCES books(id)
);
if (isset($_POST['borrow'])) {
$book_id = $_POST['book_id'];
$user_name = $_POST['user_name'];
$borrow_date = date('Y-m-d');
$pdo->beginTransaction();
try {
$stmt = $pdo->prepare("INSERT INTO borrow_records (book_id, user_name, borrow_date) VALUES (?, ?, ?)");
$stmt->execute([$book_id, $user_name, $borrow_date]);
$stmt = $pdo->prepare("UPDATE books SET quantity = quantity - 1 WHERE id = ?");
$stmt->execute([$book_id]);
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
echo "Error: " . $e->getMessage();
}
}
安全性考虑
对所有用户输入进行验证和过滤,使用预处理语句防止SQL注入。
function sanitizeInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
用户界面
创建简洁的用户界面,包括导航栏、表单和表格展示区域。
<nav>
<a href="index.php">图书列表</a>
<a href="add_book.php">添加图书</a>
<a href="borrow.php">借阅图书</a>
</nav>
<form action="search.php" method="get">
<input type="text" name="search" placeholder="搜索书名或作者">
<button type="submit">搜索</button>
</form>
扩展功能
可根据需要添加更多功能,如图书分类、预约系统、逾期计算、用户管理等。定期备份数据库确保数据安全,使用会话管理实现用户登录系统。







