WP Database Table to CSV file

时间:2015-12-27 作者:Phantom

我正在创建一个脚本,它接受一个自定义WordPress数据库表并将其导出到CSV文件中。我似乎无法让它发挥作用。有人能帮帮我吗

<?php
$parse_uri = explode( \'wp-admin\', $_SERVER[\'SCRIPT_FILENAME\'] );
require_once( $parse_uri[0] . \'wp-load.php\' );
global $wpdb;
$result = $wpdb->get_results("SELECT * FROM wp_email_table;");
$i = 0;
foreach ($result as $row) {
$csv_output .= $row->Field.
$i++;
}
$csv_output .= "\\n";

$values = $wpdb->get_results("SELECT * FROM wp_email_table;");
foreach ($values as $rowr) {    
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr->$j.
}
$csv_output .= "\\n";
}

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
?> 
好的,我对它进行了一些修改,现在我收到以下错误

致命错误:无法将stdClass类型的对象用作第8行的数组

1 个回复
SO网友:s_ha_dum

你有几件事做错了。

首先,你显然处于WordPress的语境中。为此,您应该使用AJAX API,而不是包括wp-load.php.实际上,这从来都不是正确的做法

  • get_results() 默认为对象,因此当您尝试将结果用作数组时,将出现geterrors。添加ARRAY_A 到该函数的参数列表(或使用对象语法)不要硬编码WordPress表前缀$file 未定义当您只需要一个查询时,您有两个查询foreachfor, 和相关的代码,太复杂了
  • 我没有您的测试表,但这应该很接近。

    function csv_pull_wpse_212972() {
      global $wpdb;
      $file = \'email_csv\'; // ?? not defined in original code
      $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}email_table;",ARRAY_A);
    
      if (empty($results)) {
        return;
      }
    
      $csv_output = \'"\'.implode(\'";"\',array_keys($results[0])).\'";\'."\\n";;
    
      foreach ($results as $row) {
        $csv_output .= \'"\'.implode(\'";"\',$row).\'";\'."\\n";
      }
      $csv_output .= "\\n";
    
      $filename = $file."_".date("Y-m-d_H-i",time());
      header("Content-type: application/vnd.ms-excel");
      header("Content-disposition: csv" . date("Y-m-d") . ".csv");
      header( "Content-disposition: filename=".$filename.".csv");
      print $csv_output;
      exit;
    }
    add_action(\'wp_ajax_csv_pull\',\'csv_pull_wpse_212972\');
    
    要“触发”,请向发送请求http://sitename.com/wp-admin/admin-ajax.php?action=csv_pull. 在WordPress中,您可以使用$ajax_url = admin_url(\'admin-ajax.php?action=csv_pull\');

    相关推荐

    如何同时使用wpdb导出和导入?

    当我使用WP-CLI 我对wp db export和wp db import命令有一些问题。我的桌面上有一个本地站点,我想迁移到我的笔记本电脑上,这样我就可以使用它了。因此,我在桌面上,导航到适当的目录并键入wp db export. 成功创建文件:ccv3-2018-07-12-4e523fb.sql这是我不明白的部分。我将它在桌面上创建的SQL文件复制粘贴到本地网站所在的笔记本电脑目录。I类型wp db import ccv3-2018-07-12-4e523fb.sql --authors=skip