有人可以告诉我请问我的代码中的错误在哪里?我一直试图加入两个表来获得考试成绩,但我总是得到错误“警告: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;
}
答案 0 :(得分:3)
第一个建议:可读性问题: - )
我建议您为表使用SQL别名,因为它使查询更容易阅读。
您还可以指定哪些列属于哪个表。否则,让我们说一年之后你在两个表上都有一个year
列,你的查询将会失败,因为解析器不知道你指的是哪一列。
我假设level
,year
和semester
是exams
表的一部分。
<?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();
}