php实现人员管理系统
数据库设计
创建数据库表结构存储人员信息,通常包括以下字段:
id:主键,自增name:姓名age:年龄gender:性别position:职位salary:薪资department:部门join_date:入职日期
SQL创建表示例:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT,
gender ENUM('Male', 'Female', 'Other'),
position VARCHAR(100),
salary DECIMAL(10,2),
department VARCHAR(100),
join_date DATE
);
连接数据库
使用PDO连接MySQL数据库:
$host = 'localhost';
$dbname = 'personnel_system';
$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' && isset($_POST['add'])) {
$stmt = $pdo->prepare("INSERT INTO employees (name, age, gender, position, salary, department, join_date)
VALUES (:name, :age, :gender, :position, :salary, :department, :join_date)");
$stmt->execute([
':name' => $_POST['name'],
':age' => $_POST['age'],
':gender' => $_POST['gender'],
':position' => $_POST['position'],
':salary' => $_POST['salary'],
':department' => $_POST['department'],
':join_date' => $_POST['join_date']
]);
header("Location: index.php");
exit();
}
显示人员列表
查询并显示所有人员信息:
$stmt = $pdo->query("SELECT * FROM employees");
$employees = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($employees as $employee) {
echo "<tr>
<td>{$employee['id']}</td>
<td>{$employee['name']}</td>
<td>{$employee['age']}</td>
<td>{$employee['gender']}</td>
<td>{$employee['position']}</td>
<td>{$employee['salary']}</td>
<td>{$employee['department']}</td>
<td>{$employee['join_date']}</td>
<td>
<a href='edit.php?id={$employee['id']}'>Edit</a>
<a href='delete.php?id={$employee['id']}' onclick='return confirm(\"Are you sure?\")'>Delete</a>
</td>
</tr>";
}
编辑人员信息
实现编辑功能需要先查询原有数据再更新:
// 查询原有数据
$stmt = $pdo->prepare("SELECT * FROM employees WHERE id = ?");
$stmt->execute([$_GET['id']]);
$employee = $stmt->fetch();
// 更新数据
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['update'])) {
$stmt = $pdo->prepare("UPDATE employees SET
name = :name,
age = :age,
gender = :gender,
position = :position,
salary = :salary,
department = :department,
join_date = :join_date
WHERE id = :id");
$stmt->execute([
':name' => $_POST['name'],
':age' => $_POST['age'],
':gender' => $_POST['gender'],
':position' => $_POST['position'],
':salary' => $_POST['salary'],
':department' => $_POST['department'],
':join_date' => $_POST['join_date'],
':id' => $_POST['id']
]);
header("Location: index.php");
exit();
}
删除人员记录
实现删除功能:
if (isset($_GET['id'])) {
$stmt = $pdo->prepare("DELETE FROM employees WHERE id = ?");
$stmt->execute([$_GET['id']]);
header("Location: index.php");
exit();
}
安全注意事项
防止SQL注入:
- 始终使用预处理语句
- 对用户输入进行验证和过滤
数据验证示例:
function validateInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
分页功能
实现数据分页显示:
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$total = $pdo->query("SELECT COUNT(*) FROM employees")->fetchColumn();
$totalPages = ceil($total / $perPage);
$stmt = $pdo->prepare("SELECT * FROM employees LIMIT :offset, :perPage");
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
$employees = $stmt->fetchAll(PDO::FETCH_ASSOC);
搜索功能
添加姓名搜索功能:
if (isset($_GET['search'])) {
$search = '%' . $_GET['search'] . '%';
$stmt = $pdo->prepare("SELECT * FROM employees WHERE name LIKE :search");
$stmt->execute([':search' => $search]);
$employees = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
这个基础的人员管理系统包含了CRUD(创建、读取、更新、删除)功能,可以根据需要进一步扩展,如添加用户认证、权限管理、文件上传等功能。






