【问题标题】:moodle database穆勒数据库
【发布时间】:2021-09-08 09:13:33
【问题描述】:

我正在尝试从 Moodle 中的数据库中获取数据我这样做:

$sql = " SELECT bbb.name, ue.name AS UeName, bbb.timecreated, bbb.timemodified FROM mdl_bigbluebuttonbn AS bbb 加入 mdl_block_report_bbb_user_events AS ue ON ue.meeting_id = bbb.id ";

$result = $DB->get_record_sql($sql);

var_dump($result);die();

但是使用 get_record_sql 方法我只能获取数据库中的第一条记录,我应该如何获取数据库中的所有记录?

【问题讨论】:

    标签: sql database plugins moodle


    【解决方案1】:

    首先,您不应该将“mdl_”前缀硬编码到您的 SQL 查询中,因为在不同的站点上可能会有所不同(如果您对您的站点运行 PHPUnit 或 Behat 测试,则总是不同) - 根据https://docs.moodle.org/dev/Data_manipulation_API#Table_prefix 的文档请改用 {tablename} 格式:

    $sql = "SELECT bbb.name, ue.name AS UeName, bbb.timecreated, bbb.timemodified 
              FROM {bigbluebuttonbn} bbb
              JOIN {block_report_bbb_user_events} ue ON ue.meeting_id = bbb.id";
    

    一旦修复,您就可以使用:

    $DB->get_records_sql($sql);
    

    (注意记录上的“s”)以获取结果。

    请注意,get_records_sql() 将返回一个由返回的第一个字段索引的数组,因此如果您的查询产生多个具有相同 'bbb.name' 的结果,那么您将看不到这些结果(并得到一个调试警告,如果你有调试,你在开发时应该这样做)。

    您可能需要添加一些独特的内容作为返回的第一个字段(例如“SELECT ue.id, bbb.name, ...”)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 2020-05-27
      相关资源
      最近更新 更多