Moodle 插入_记录();写入数据库时出错

Moodle 插入_记录();写入数据库时出错,moodle,Moodle,我用phpmyadmin在moodle中创建了新表。 现在我想将数据插入到新表“dev”中。 写入数据库时出错。 我的代码是 if($_POST['send']){ $id =$_POST['id']; $name =$_POST['name']; global $DB; $data = new stdClass(); $data->dev_id = $id; $data->dev_name = $name; $DB->

我用phpmyadmin在moodle中创建了新表。 现在我想将数据插入到新表“dev”中。 写入数据库时出错。 我的代码是

if($_POST['send']){
    $id =$_POST['id'];
    $name =$_POST['name'];
    global $DB;
    $data = new stdClass();
    $data->dev_id  = $id;
    $data->dev_name = $name;
    $DB->insert_record('dev', $data);
快速回答:

dev
表名为
mdl\u dev

长答覆:

在开发过程中打开调试,这将向您提供更详细的错误消息:

config.php
中添加以下内容:

// Developer settings - not for production or staging!
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 0);

$CFG->debug = E_ALL | E_STRICT; // 32767;
$CFG->debugdisplay = true;
此外,还应使用XMLDB编辑器创建表:

也不要直接使用$\u POST,这会引入SQL注入。始终使用可选的参数()或必需的参数()-例如:

$send = optional_param('send', false, PARAM_BOOL);
$id = optional_param('id', null, PARAM_INT);
$name = optional_param('name', null, PARAM_TEXT);
if ($send) {
    ...

有不同的可能性。如果不知道数据库结构和其中包含的数据,很难判断

1:表不存在。正如Russell England所说,确保mdl_dev表存在

2:该表有一些必填字段,您没有将这些字段分配给$data对象,并且没有定义默认字段

3:其中一个字段是唯一的,您为该字段传递给$data对象的值已在表中由其他数据集使用

4:传递给表的数据类型与为表字段定义的类型不匹配,例如试图在INT字段中保存字符串


5:您的值超出了允许的范围,例如名称超过了该字段定义的最大长度。

非常感谢您的建议。现在我已经按照你说的$u POST进行了修改。我按照你说的再次检查我的表。非常感谢你。