在moodle中添加多条记录

Add several records in moodle

我一直无法在我的 table in moodle 中添加项目,这就是我尝试的方法,但没有成功。

$totalrec = array();
$rec2 = $DB->get_records('table1', null, '', '*', 0, 0);
$rec4 = $DB->get_records('table2', array('x' => 'y') , '', '*', 0, 0);

foreach ($rec2 as $records2) {
    $rec3 = $DB->get_records('z', array('m' => 'n') , '', '*', 0, 0);
    foreach ($rec3 as $records3) {
        if (isset($_REQUEST['a']) && isset($_REQUEST['b'])) {
            $ca = $_REQUEST['a'];
            $co = $_REQUEST['b'];
            $pi = $records2->idp;
            $recorsh = new class ();

            $recorsh->id = $records2->id;
            $recorsh->te = $co;
            $recorsh->idt = $ti;
            $recorsh->res = $ca;
            $recorsh->ida = $idaud;
            $totalrec[$n] = array($recorsh);
            $n++;
        }
    }
}

$lastinsertid2 = $DB->insert_records('table4', $totalrec);

还有,这个:

$rec2 = $DB->get_records('table1', null, '', '*', 0, 0);
$rec4 = $DB->get_records('table2', array('x' => 'y') , '', '*', 0, 0);

foreach($rec2 as $records2) {
    $rec3 = $DB->get_records('z', array('m' => 'n') , '', '*', 0, 0);
    foreach($rec3 as $records3) {
        if (isset($_REQUEST['a']) && isset($_REQUEST['b'])) {
            $ca = $_REQUEST['a'];
            $co = $_REQUEST['b'];
            $pi = $records2->idp;
            $recorsh = new class ();

            $recorsh->id = $records2->id;
            $recorsh->te = $co;
            $recorsh->idt = $ti;
            $recorsh->res = $ca;
            $recorsh->ida = $idaud;
            $lastinsertid = $DB->insert_record('table4', $recorsh, false);
        }
    }
}

他们两个都给了我一个"Error writing to database"但是没有说什么具体的,我知道我不是在做插入"in the right way"但是我不知道怎么做,我做错了什么?

可能是因为在插入之前给每个对象添加了ID。

$recorsh->id = $records2->id;

正如 davosmith 所说,在开发过程中始终将调试设置为开发人员级别。

在你的config.php中有这个

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 0);

$CFG->debug = E_ALL | E_STRICT; // 32767;
$CFG->debugdisplay = true;

也永远不要直接使用 $_REQUEST 或 $_GET 或 $_POST。这样可以引入SQL注入

使用

$a = optional_param('a', null, PARAM_XXX);
$b = optional_param('b', null, PARAM_XXX);

$a = required_param('a', PARAM_XXX);
$b = required_param('b', PARAM_XXX);

将 PARAM_XXX 更改为您期望的参数类型。例如 PARAM_INTPARAM_BOOL