【问题标题】:How to inserting data from install.xml file into mysql database in moodle如何将install.xml文件中的数据插入moodle中的mysql数据库
【发布时间】:2016-11-23 11:39:51
【问题描述】:

在moodle站点(使用moodle 2.6.3版),我已经通过XMLDB编辑器生成了install.xml文件,但它仅用于在插件安装期间在数据库中创建表。我还想在表中插入一些默认行。

任何机构都可以帮助我如何在 install.xml 文件中编辑以插入数据

【问题讨论】:

    标签: moodle


    【解决方案1】:

    要在安装后添加数据,请创建一个名为 yourplugin/db/install.php 的文件

    更新:添加了 xml 解析器

    defined('MOODLE_INTERNAL') || die;
    
    require_once($CFG->libdir . '/xmlize.php');
    
    function xmldb_yourpluginname_install() {
        global $CFG, $OUTPUT, $DB;
        // Your add data code here.
        $xmltext = file_get_contents('import.xml');
        $records = parse_xml($xmltext, 'records', 'record');
        foreach ($records as $record) {
            $DB->insert_record('yourtablename', $record);
        }
    }
    
    /**
     * Converts XML text into an array of stdclass objects.
     *
     * @param type $text - xmltext
     * @param type $elementnames - plural name of elements
     * @param type $elementname - name of element
     * @return array|boolean - array of record objects
     */
    function parse_xml($text, $elementnames, $elementname) {
        // Seems that xmlize needs a lot of memory.
        ini_set('memory_limit', '256M');
    
        // Ensure content is UTF-8.
        $content = xmlize($text, 1, 'UTF-8');
    
        $records = array();
        if (!empty($content[$elementnames]['#'][$elementname])) {
            $rows = $content[$elementnames]['#'][$elementname];
            foreach ($rows as $row) {
                $fields = $row['#'];
                $row = new stdClass();
                foreach ($fields as $fieldname => $fieldvalue) {
                    $row->$fieldname = $fieldvalue[0]['#'];
                }
                $records[] = $row;
            }
            return $records;
        }
    
        return false;
    }
    

    【讨论】:

    • 谢谢Russell England 先生的建议 但是,我想通过install.xml 文件插入数据 我可以通过在install.xml 文件中写语句来插入数据吗?
    • 没有。在安装期间插入数据的 Moodle 机制是通过 install.php。 install.xml 仅用于表结构的定义。
    • 正如 Davosmith 所说,install.xml 仅用于创建表 - 如果您需要从 xml 文件导入数据,我已经使用 xml 解析器更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2014-05-03
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 2011-08-06
    • 2021-02-19
    • 2012-11-14
    相关资源
    最近更新 更多