我通过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);
答案 0 :(得分: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_param() - 例如:
$send = optional_param('send', false, PARAM_BOOL);
$id = optional_param('id', null, PARAM_INT);
$name = optional_param('name', null, PARAM_TEXT);
if ($send) {
...
答案 1 :(得分:0)
有不同的可能性。在不知道数据库结构和内部数据的情况下很难分辨。
1:该表不存在。正如Russell England所说,确保表mdl_dev存在。
2:该表包含一些您未分配给$ data-Object的必填字段,并且没有默认定义。
3:其中一个字段是唯一的,您传递给该字段的$ data-object的值已在表中由不同的数据集使用。
4:传递给表的数据类型与为表字段定义的类型不匹配,例如尝试在INT字段中保存字符串。
5:您的值超出了允许的范围,例如名称长于该字段的已定义最大长度。