异常 - 在 NULL 上调用成员函数 get_record( )
Exception - Call to a member function get_record( ) on NULL
我正在尝试使用 moodle 数据操作 API 获取学生的成绩以进行分析。但是当我在我创建的另一个函数中使用函数 get_record() 时,我得到了标题的消息。我不知道为什么这个功能在 main 中起作用,而在 function.Any idea 中不起作用?我是 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;函数内部
- 测验数据库 table 被称为 'quiz',而不是 'moodle.quiz'(Moodle 配置处理连接到正确的数据库)
- PHP 使用“->”运算符访问对象属性,而不是“.” (用于连接),所以它不是 $quiz->id,$quiz.id
- 如果你想要 return 所有测验,你应该调用 $DB->get_records(),而不是 $DB->get_record()(return只有 1 条记录,如果找到多个记录,则输出调试警告。
- 如果你想要特定课程的测验,那么你应该匹配测验记录中的 'course' 字段,而不是 'id' 字段(这是测验的 ID,而不是当然)。
所以函数大概应该是这样的:
function get_all_quiz($courseid) {
global $DB;
return $DB->get_records('quiz', array('course' => $courseid));
}
我正在尝试使用 moodle 数据操作 API 获取学生的成绩以进行分析。但是当我在我创建的另一个函数中使用函数 get_record() 时,我得到了标题的消息。我不知道为什么这个功能在 main 中起作用,而在 function.Any idea 中不起作用?我是 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;函数内部
- 测验数据库 table 被称为 'quiz',而不是 'moodle.quiz'(Moodle 配置处理连接到正确的数据库)
- PHP 使用“->”运算符访问对象属性,而不是“.” (用于连接),所以它不是 $quiz->id,$quiz.id
- 如果你想要 return 所有测验,你应该调用 $DB->get_records(),而不是 $DB->get_record()(return只有 1 条记录,如果找到多个记录,则输出调试警告。
- 如果你想要特定课程的测验,那么你应该匹配测验记录中的 'course' 字段,而不是 'id' 字段(这是测验的 ID,而不是当然)。
所以函数大概应该是这样的:
function get_all_quiz($courseid) {
global $DB;
return $DB->get_records('quiz', array('course' => $courseid));
}