2016-05-17 38 views
1

我通过phpmyadmin在moodle中创建了新表。 现在我想将数据插入到新表“dev”中。 我得到了写入数据库时​​出错。 我的代码是...insert_record();写入数据库时​​出错

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); 

回答

0

快速回答:

是在dev表称为mdl_dev

龙答:

发展过程中切换调试,这会给你更详细的错误信息:

https://docs.moodle.org/30/en/Debugging

在你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编辑器来创建表格:

https://docs.moodle.org/dev/XMLDB_editor

也从来没有直接用户$ _POST,这可以引入SQL注入。始终使用optional_param()或required_pa​​ram() - 例如:

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

非常感谢您的建议。现在我已经修改,如你所说的$ _POST。 –

1

有不同的可能性。不知道数据库结构和内部包含的数据很难说清楚。

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

2:表中有一些您没有分配给您的$ data-Object的必填字段,并且没有默认定义。

3:其中一个字段是唯一的,并且您传递给该字段的$ data-object的值已在表中由不同的数据集使用。

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

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

+0

我按照你的说法再次检查我的桌子。非常感谢。 –