我一直在开发开源插件,并试图为其添加新功能。现在我一直在这样做
else if( $selected_report == "greport" ) {
$sql = mysql_query( "SELECT rating_postid FROM {$wpdb->ratings}" ) or die( mysql_error() );
}
generate_csv( $sql );
exit;
function generate_csv( $sql ) {
header( \'Content-Type: text/csv; charset=utf-8\' );
header( \'Content-Disposition: attachment; filename=data.csv\' );
$row = mysql_fetch_assoc( $sql );
$fp = fopen( \'php://output\', \'w\' );
if( $row ) {
fputcsv( $fp, array_keys( $row ) );
mysql_data_seek( $sql, 0 );
}
while( $row = mysql_fetch_assoc( $sql ) ) {
fputcsv( $fp, $row );
}
fclose( $fp );
}
这非常有效,但我被告知要使用WordPress函数来获取数据。我把查询改成这样
$sql = $wpdb-> get_results( "SELECT rating_id FROM {$wpdb->ratings}" );
这会给下载功能带来问题,因为它无法识别
sql_fetch_assoc
. 我试着迭代那些同样不起作用的值。这是我第一次使用WordPress。任何建议都会大有帮助。
最合适的回答,由SO网友:Wes Moberly 整理而成
默认情况下$wpdb->get_results()
以对象数组的形式返回结果。如果需要关联数组的数组,只需执行以下操作:
$results = $wpdb->get_results( "...", ARRAY_A );
显然,我不熟悉您的项目或您正在使用的代码,而且我还没有对此进行测试,但您可能希望执行以下操作:
$results = $wpdb->get_results(
"SELECT rating_postid FROM {$wpdb->ratings}",
ARRAY_A
);
if ( ! empty( $results ) ) {
header( \'Content-Type: text/csv; charset=utf-8\' );
header( \'Content-Disposition: attachment; filename=data.csv\' );
$fp = fopen( \'php://output\', \'w\' );
fputcsv( $fp, array_keys( $results[0] ) );
foreach ( $results as $row ) {
fputcsv( $fp, $row );
}
fclose( $fp );
}