使用PDO选择包含参数的连接表

时间:2017-03-24 21:40:31

标签: php mysql pdo

有人可以告诉我请问我的代码中的错误在哪里?我一直试图加入两个表来获得考试成绩,但我总是得到错误“警告:PDOStatement:execute():SQLSTATE [HY093]:参数号无效:参数未在C中定义:direcory'

这是我的代码:

@ProbeBuilder
public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
    //make sure the needed imports are there. 
    probe.setHeader(Constants.IMPORT_PACKAGE, "*,com.myproject.sample.bundle.*");
    return probe;
}

1 个答案:

答案 0 :(得分:3)

第一个建议:可读性问题: - )

我建议您为表使用SQL别名,因为它使查询更容易阅读。

您还可以指定哪些列属于哪个表。否则,让我们说一年之后你在两个表上都有一个year列,你的查询将会失败,因为解析器不知道你指的是哪一列。

我假设levelyearsemesterexams表的一部分。

<?php

function getEmptyExamScores($conn, $course_code, $level, $year, $semester) {
    $query = 'SELECT *
        FROM exams e
        INNER JOIN register_course rc ON e.course_code = rc.course_code
        WHERE e.course_code = :course_code
            AND e.level = :level
            AND e.year = :year
            AND e.semester = :semester';

    $stmt = $conn->prepare($query);

    $stmt->execute([
        'course_code' => $course_code,
        'level' => $level,
        'year' => $year,
        'semester' => $semester,
    ]);

    return $stmt->fetchAll();
}