执行插入wpdb操作后保存SQL文件

时间:2015-01-06 作者:Andrew Welch

下面的代码获取一个xml文件并将其插入到数据库表中。但是,我还想将完整的insert查询保存为备份。是否可以写出wpdb生成的查询,以便将其保存到文件中?

function lc_course_database_convert_to_sql( $file ) {
    global $wpdb;
    //$wpdb->show_errors();
    $xml = simplexml_load_file( $file[\'url\'] );
    $tablename   = $wpdb->prefix . \'courses\';
    $mydata = new SimpleXmlIterator( $file[\'url\'], 0, true );
    for ( $mydata->rewind();$mydata->valid();$mydata->next() ) {
        //create an array with the column names and corresponding values
        $insertarray = array();
        foreach ( $mydata->current() as $k=>$v ) {
            $insertarray[$k]= (string)$v;
        }
        $wpdb->insert(
            $tablename,
            $insertarray,
            array(
                \'%d\',
                \'%s\',
                \'%d\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%d\',
                \'%d\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%d\',
                \'%d\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%s\',
                \'%d\',
                \'%s\',
                \'%s\',
                \'%d\',
                \'%s\',
                \'%s\',
                \'%d\',
                \'%d\',
                \'%s\',
                \'%s\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
                \'%d\',
            )
        );
    }
}

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

不重要的$wpdb->last_query 将保留它。:)

要获得更广泛的日志,您可能需要定义SAVEQUERIES 常数至true 在配置中。完整日志将在中提供$wpdb->queries. 出于性能原因,默认情况下它处于关闭状态。

结束

相关推荐

$wpdb-即使总是只有一个结果,您也必须使用Foreach吗?

我有一个$wpdb查询,它将始终only 返回一个结果。这是它的简化版本:$results = $wpdb->get_results ( \"SELECT name FROM testTable WHERE id=1\" ); 我必须使用foreach才能获得单一结果吗?foreach ($results as $result ) { $name = $result->name; } 或者我可以跳过foreach,改为这样做:$name = $re