2016-05-17 1 views
1

Я создал новую таблицу в moodle по phpmyadmin. Теперь я хочу вставить данные в новую таблицу «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_param() - например:

$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: Таблицы не существует. Как сказал Рассел Англия, убедитесь, что таблица mdl_dev существует.

2: В таблице есть некоторые обязательные поля, которые вы не назначили своему $ data-Object, и по умолчанию не определено.

3: Одно из полей уникально, и значение, которое вы передали вашему объекту $ data для этого поля, уже используется в таблице с помощью другого набора данных.

4: Типы данных, которые вы передаете в таблицу, не соответствуют типу, определенному для вашего поля таблицы, например, попытка сохранить строку в поле INT.

5: Ваши значения превышают допустимый диапазон, например, длина длиннее указанной максимальной длины для этого поля.

+0

Я снова проверяю свой стол, как вы говорите. Огромное спасибо. –