php - 异常 - 在 NULL 上调用成员函数 get_record()
问题描述
我正在尝试使用moodle Data Manipulation API 来获取学生的成绩以进行分析。但是当我在我创建的另一个函数中使用函数 get_record() 时,我得到了标题的信息。我不知道为什么该功能在主要功能中起作用而在功能内部不起作用。知道吗?我是 php 和 moodle 操作的新手,所以请放轻松。
<?php
function get_all_quiz ($courseid) {
$quizesid = [];
$quiz = $DB->get_record('moodle.quiz', array('id'=>$courseid));
$quizesid = $quiz.id;
return $quizesid;
}
global $DB;
define('CLI_SCRIPT', true);
require '../../var/www/moodle/config.php';
$coursetest = 3;
$studentgrades = [];
$quizes = get_all_quiz($coursetest);
?>
解决方案
您需要在此函数中修复一些问题:
- 您需要添加全局 $DB; 函数内部
- 测验数据库表称为“测验”,而不是“moodle.quiz”(Moodle 配置处理连接到正确的数据库)
- PHP 使用 '->' 操作符来访问对象属性,而不是 '.' (用于连接),所以是 $quiz->id 不是,$quiz.id
- 如果您想返回所有测验,您应该调用 $DB->get_records(),而不是 $DB->get_record()(它只返回 1 条记录,如果找到多条记录,则输出调试警告)。
- 如果您想要特定课程的测验,那么您应该匹配测验记录中的“课程”字段,而不是“id”字段(这是测验的 ID,而不是课程)。
所以函数应该看起来像这样:
function get_all_quiz($courseid) {
global $DB;
return $DB->get_records('quiz', array('course' => $courseid));
}
推荐阅读
- python - scipy 中的 st.ttest_ind 返回 p 值为 0.0
- c++ - const_cast:仅当原始变量为 const 时,修改以前的 const 值才是未定义的
- python - 如果两个列是相同的 Pandas,则在它们之间添加列
- scrapy - XPath 选择器返回空列表
- visual-studio-2019 - Visual Studio 2019 - Angular 9.1.9 - 没有实时重新加载
- javascript - google fitBounds 无法按预期工作
- google-cloud-dataflow - 状态和输出的原子性
- android - Kotlin 1.4 是否放弃对 Coroutine Actors 的支持
- python - python中隔离林是否必须设置污染值?
- python - 导入 python 模块时没有这样的文件或目录。文件肯定存在于同一路径中