当前位置:首页 > PHP

php实现题库答题

2026-02-16 10:16:33PHP

PHP实现题库答题系统

数据库设计

创建数据库表存储题目和答案信息,基本结构如下:

CREATE TABLE questions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    question_text TEXT NOT NULL,
    question_type ENUM('single', 'multiple', 'true_false') NOT NULL,
    difficulty TINYINT DEFAULT 1
);

CREATE TABLE options (
    id INT AUTO_INCREMENT PRIMARY KEY,
    question_id INT NOT NULL,
    option_text TEXT NOT NULL,
    is_correct BOOLEAN DEFAULT false,
    FOREIGN KEY (question_id) REFERENCES questions(id)
);

题目展示功能

通过PHP从数据库随机抽取题目并展示:

$pdo = new PDO('mysql:host=localhost;dbname=quiz_db', 'username', 'password');
$stmt = $pdo->query("SELECT * FROM questions ORDER BY RAND() LIMIT 10");

while ($question = $stmt->fetch()) {
    echo '<div class="question">';
    echo '<h3>'.$question['question_text'].'</h3>';

    $options = $pdo->query("SELECT * FROM options WHERE question_id = ".$question['id']);
    while ($option = $options->fetch()) {
        echo '<input type="radio" name="q'.$question['id'].'" value="'.$option['id'].'">';
        echo '<label>'.$option['option_text'].'</label><br>';
    }
    echo '</div>';
}

答案验证处理

提交后检查用户答案的正确性:

php实现题库答题

$score = 0;
foreach ($_POST as $key => $value) {
    if (strpos($key, 'q') === 0) {
        $questionId = substr($key, 1);
        $optionId = $value;

        $stmt = $pdo->prepare("SELECT is_correct FROM options WHERE id = ?");
        $stmt->execute([$optionId]);
        $isCorrect = $stmt->fetchColumn();

        if ($isCorrect) {
            $score++;
        }
    }
}
echo "您的得分:$score/10";

高级功能实现

添加题目分类和难度筛选:

$category = $_GET['category'] ?? null;
$difficulty = $_GET['difficulty'] ?? null;

$query = "SELECT * FROM questions WHERE 1=1";
if ($category) {
    $query .= " AND category_id = $category";
}
if ($difficulty) {
    $query .= " AND difficulty = $difficulty";
}
$query .= " ORDER BY RAND() LIMIT 10";

安全防护措施

防止SQL注入和使用预处理语句:

php实现题库答题

$stmt = $pdo->prepare("SELECT * FROM questions WHERE category_id = :cat AND difficulty = :diff");
$stmt->execute([
    ':cat' => $category,
    ':diff' => $difficulty
]);

性能优化建议

使用缓存减少数据库查询:

$cacheKey = "questions_{$category}_{$difficulty}";
if (!apcu_exists($cacheKey)) {
    $questions = $pdo->query($query)->fetchAll();
    apcu_store($cacheKey, $questions, 3600);
} else {
    $questions = apcu_fetch($cacheKey);
}

扩展功能

添加用户答题历史记录:

CREATE TABLE user_answers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    question_id INT NOT NULL,
    option_id INT NOT NULL,
    is_correct BOOLEAN,
    answer_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

标签: 题库php
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session…

php实现搜索功能

php实现搜索功能

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

php实现栈

php实现栈

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

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searchT…