insert_record();写入数据库时出错
insert_record(); Error writing to database
我通过 phpmyadmin 在 moodle 中创建了新的 table。
现在我想将数据插入到新的 table "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
table 叫 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 编辑器来创建 tables :
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: table 不存在。正如 Russell England 所说,确保 table mdl_dev 存在。
2:table 有一些您没有分配给 $data-Object 的必填字段,并且没有定义默认值。
3:其中一个字段是唯一的,您为该字段传递给 $data-object 的值已经在 table 中被另一个数据集使用。
4:您传递给 table 的数据类型与为您的 table 字段定义的类型不匹配,例如尝试在 INT 字段中保存字符串。
5:您的值超出了允许的范围,例如名称超过了该字段定义的最大长度。
我通过 phpmyadmin 在 moodle 中创建了新的 table。 现在我想将数据插入到新的 table "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
table 叫 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 编辑器来创建 tables :
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: table 不存在。正如 Russell England 所说,确保 table mdl_dev 存在。
2:table 有一些您没有分配给 $data-Object 的必填字段,并且没有定义默认值。
3:其中一个字段是唯一的,您为该字段传递给 $data-object 的值已经在 table 中被另一个数据集使用。
4:您传递给 table 的数据类型与为您的 table 字段定义的类型不匹配,例如尝试在 INT 字段中保存字符串。
5:您的值超出了允许的范围,例如名称超过了该字段定义的最大长度。