2016-05-17 40 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

我按照你的說法再次檢查我的桌子。非常感謝。 –